单列中所有可能值的组合

问题描述 投票:0回答:2

我试图找到这个具体问题的答案,但没有任何运气。假设我有一个带有以下列的 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
python pandas dataframe combinations
2个回答
0
投票

代码

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]})

0
投票

您可以尝试使用任何首选方法首先获得所有可能的组合。我会选择“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)
© www.soinside.com 2019 - 2024. All rights reserved.