【问题标题】:Pandas all possible combinations of two columns熊猫所有可能的两列组合
【发布时间】:2021-03-09 09:05:13
【问题描述】:
我有这样一张桌子:
A B C
1 1 2 3
2 5 6 7
我想提取所有包含两列的组合作为单独的数据框:
A B
1 1 2
2 5 6
A C
1 1 3
2 5 7
B C
1 2 3
2 6 7
如何做到这一点?
【问题讨论】:
标签:
python
pandas
combinations
【解决方案1】:
在循环中使用itertools.combinations 和DataFrame.loc:
from itertools import combinations
for c in combinations(df.columns, 2):
print (df.loc[:, c])
A B
1 1 2
2 5 6
A C
1 1 3
2 5 7
B C
1 2 3
2 6 7
如果需要数据框列表:
L = [df.loc[:, c] for c in combinations(df.columns, 2)]
print (L)
[ A B
1 1 2
2 5 6, A C
1 1 3
2 5 7, B C
1 2 3
2 6 7]
或数据帧的字典:
d = {f'{"_".join(c)}': df.loc[:, c]for c in combinations(df.columns, 2)}
print (d)
{'A_B': A B
1 1 2
2 5 6, 'A_C': A C
1 1 3
2 5 7, 'B_C': B C
1 2 3
2 6 7}