我有一个 Dataframe 如下:
df = pd.DataFrame({'id': ['a', 'b', 'c', 'd'],
'colA': [1, 2, 3, 4],
'colB': [5, 6, 7, 8],
'colC': [9, 10, 11, 12],
'colD': [13, 14, 15, 16]})
我想得到'colA','colB','colC'和'colD'的所有组合,并计算每个组合的总和。我可以使用itertools得到所有组合
cols = ['colA', 'colB', 'colC', 'colD']
all_combinations = [c for i in range(2, len(cols)+1) for c in combinations(cols, i)]
但是我怎样才能得到每个组合的总和,并在 Dataframe 中创建一个新列呢?
id colA colB colC colD colA+colB colB+colC ... colA+colB+colC+colD
a 1 5 9 13 6 14 ... 28
b 2 6 10 14 8 16 ... 32
c 3 7 11 15 10 18 ... 36
d 4 8 12 16 12 20 ... 40
1条答案
按热度按时间dpiehjr41#
首先,从帧中选择以
col
开头的所有列的列表。然后,我们使用combinations
创建一个字典,其中键是新求和列的名称,值是原始 Dataframe 的相应列的和,然后,我们将它们解包为**
作为assign
方法的参数,从而添加到帧中第一个