是否有一种最佳方法可以在分组的Pandas数据框中获取所有值组合?

示例数据框如下

df = pd.DataFrame({'ID': ['a', 'a', 'a', 'b', 'b', 'c', 'c'], 
                   'color': ['red', 'blue', 'green', 'red', 'blue', 'red', 'green']})

在按 ID 分组后,我想要 2 列包含颜色字段的所有组合。
我想要如下所示的结果数据框

ID 颜色 1 颜色2
一种 红色的 蓝色
一种 红色的 绿色
一种 蓝色 红色的
一种 蓝色 绿色
一种 绿色 红色的
一种 绿色 蓝色
红色的 蓝色
蓝色 红色的
C 红色的 绿色
C 绿色 红色的

回答

我认为您可以进行自我合并和查询:

df.merge(df, on='ID', suffixes=[1,2]).query('color1 != color2')

或类似的,合并然后过滤:

(df.merge(df, on='ID', suffixes=[1,2])
   .loc[lambda x: x['color1'] != x['color2']]
)

输出:

   ID color1 color2
1   a    red   blue
2   a    red  green
3   a   blue    red
5   a   blue  green
6   a  green    red
7   a  green   blue
10  b    red   blue
11  b   blue    red
14  c    red  green
15  c  green    red


以上是是否有一种最佳方法可以在分组的Pandas数据框中获取所有值组合?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>