Pandas多索引列的总和

时间:2016-05-07 05:57:07

标签: python-3.x pandas multi-index

如果我有一个带嵌套标题的数据框,如下所示:

df['sum']=df['John']+df['Joan']

...如何创建一个总和每行值的新列? 我尝试ValueError: Wrong number of items passed 3, placement implies 1 ,但这导致了这个错误:

ui.grid

2 个答案:

答案 0 :(得分:1)

舞会,一段时间没有听到你的声音。

您想要分组,但指定级别和轴。 axis=1表示您要对行而不是列求和。 level=0是列的第一行。

df = pd.DataFrame({
    ('John', 'Smith,'): [234, 2987], 
    ('John', 'Jones,'): [432, 234], 
    ('Joan', 'Smith,'): [324, 4354]}, index=['Index1', 'Index2'])

>>> df.groupby(level=0, axis=1).sum()
        Joan  John
Index1   324   666
Index2  4354  3221

答案 1 :(得分:1)

如果我理解正确的话:

  

...如何创建一个总和每行值的新列?

解决方案

每行的总和只是

df.sum(axis=1)

诀窍是成为一个新专栏。您需要确保添加的列具有2级列标题。

df.loc[:, ('sum', 'sum')] = df.sum(axis=1)

我对它不满意,但它确实有效。

         Joan   John          sum
       Smith, Jones, Smith,   sum
Index1    324    432    234   990
Index2   4354    234   2987  7575