我试图找到这个具体问题的答案,但没有任何运气。假设我有一个带有以下列的 pandas 数据框:
A B C
1 2 3
4 5 6
我想要实现的是一个新的数据框,它具有各个列本身中唯一值的所有组合,所以:
A B C
1 2 3
4 2 3
1 2 6
4 2 6
1 5 3
1 5 6
4 5 6
4 5 3
代码
pandas 可以通过使用
merge
和 cross 来做到这一点,但其他库中可能有更好的方法。
out = (df[['A']]
.merge(df[['B']], how='cross')
.merge(df[['C']], how='cross')
)
出
A B C
0 1 2 3
1 1 2 6
2 1 5 3
3 1 5 6
4 4 2 3
5 4 2 6
6 4 5 3
7 4 5 6
示例代码
df = pd.DataFrame({'A': [1, 4], 'B': [2, 5], 'C': [3, 6]})
您可以尝试使用任何首选方法首先获得所有可能的组合。我会选择“Itertools.product”。
from itertools import product
# Get unq values
unique_values = [df[col].unique() for col in df.columns]
# Get possible combinations of unq values
combinations = list(product(*unique_values))
combined_df = pd.DataFrame(combinations, columns=df.columns)