使用枢轴熊猫后如何添加新的列组?

米歇尔多

我尝试pivot在数据框上使用后创建一个由3个子列组成的新列组,但结果只有一列。

假设我具有以下数据框:

df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two',
                           'two'],
                   'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
                   'baz': [1, 2, 3, 4, 5, 6],
                   'zoo': [1, 2, 3, 4, 5, 6]})
df.pivot(index='foo', columns='bar', values=['baz', 'zoo'])

现在我想要一个额外的列组,它是两个值列bazzoo的总和

我的输出:

df.loc[:, "baz+zoo"] = df.loc[:,'baz'] + df.loc[:,'baz']

我的输出

所需的输出:

在此处输入图片说明

我知道先进行求和然后进行级联就可以解决问题,但是我希望找到一个更整洁的解决方案。

耶斯列尔

我认为如果多行或主要是多列是更好/更快,则创建newDataFrame并添加MultiIndexby的第一级,MultiIndex.from_product通过by添加到original DataFrame.join

df1 = df.loc[:,'baz'] + df.loc[:,'zoo']
df1.columns = pd.MultiIndex.from_product([['baz+zoo'], df1.columns])
print (df1)
   baz+zoo        
          A   B   C
foo                
one       2   4   6
two       8  10  12

df = df.join(df1)
print (df)
    baz       zoo       baz+zoo        
bar   A  B  C   A  B  C       A   B   C
foo                                    
one   1  2  3   1  2  3       2   4   6
two   4  5  6   4  5  6       8  10  12

另一个解决方案是按第二级循环并按MultiIndex元组选择,但是如果较大的DataFrame性能应该更差,则最好使用真实数据进行测试:

for x in df.columns.levels[1]:
    df[('baz+zoo', x)] = df[('baz', x)] + df[('zoo', x)]
print (df)
    baz       zoo       baz+zoo        
bar   A  B  C   A  B  C       A   B   C
foo                                    
one   1  2  3   1  2  3       2   4   6
two   4  5  6   4  5  6       8  10  12

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用熊猫系列添加新列

熊猫中的列组添加

熊猫-DataFrame将列或枢轴转换为新行

熊猫数据框:如何将describe()应用于每个组并添加到新列?

使用熊猫基于组内排名创建新列

如何在熊猫中基于组添加时间序列列?

如何在熊猫中添加“组内排序”列?

熊猫:根据组聚合添加新行

如何根据熊猫中的其他列添加新列?

如何使用熊猫将增量数字添加到新列

如何给逗号分隔的值使用熊猫在csv中添加新列?

如何使用熊猫将新列添加到数据透视表

熊猫:使用其他列的迭代值添加新列

熊猫groupby并添加新列

如何爆炸熊猫并根据条件添加新的行和列

如何基于熊猫中的聚合函数添加新列

使用正则表达式熊猫添加新列

在熊猫数据框中添加新列,并在组内增加日期

熊猫通用方法添加新列并查找组总数的百分比

熊猫枢轴多索引列

熊猫:将组标题移至新列

如何使用熊猫根据组中的数据减去列的行?

通过添加列组创建新列

如何将列添加到包含列值在熊猫中对应的组的名称的 DataFrame

如何使用dplyr根据组上的聚合函数计算新列(在摘要统计信息上添加摘要统计信息)?

如何使用熊猫使用条件日期时间创建新列

如何在熊猫DataFrame中生成从原始列中减去排序后的列的新列?

调整分区大小后如何将新空间添加到卷组?

如何将总和值按组放入新的列熊猫中