2017-06-21 55 views
2

无总和为分层索引的列中的数据帧:层次索引的Sum列?

dex1 dex2 dex3 one two 
    H D A 1 2  
      B 4 5  
      C 7 8  
    I E A 1 1  
      B 2 2  
      C 3 3 

与总和数据帧为一个分层索引的列应是,列DF [“一个”]索引DEX1,12(1 + 4对于索引dex1,12(1 + 4 + 7),6(1 + 2 + 3)的列df ['two'],

到目前为止,我曾尝试:

df.loc[dex1].sum['one'] 

回答

2

您可以使用groupby + GroupBy.sum

df1 = df.groupby(level='dex1').sum() 
print (df1) 
     one two 
dex1   
H  12 15 
I  6 6 

从大熊猫的版本0.20.0可能omit level参数。

df1 = df.groupby('dex1').sum() 
print (df1) 
     one two 
dex1   
H  12 15 
I  6 6 

或者使用DataFrame.sum与参数level:为实现

df1 = df.sum(level=0) 
print (df1) 
     one two 
dex1   
H  12 15 
I  6 6 
df1 = df.sum(level='dex1') 
print (df1) 
     one two 
dex1   
H  12 15 
I  6 6 
+1

这个答案是正确的。为了我的目的,我尽量避免使用.groupby(),所以df.sum(level = int)很好。谢谢! –

+0

澄清,当你说在熊猫0.20.1中可能省略等级,那么可以说df1 = df.groupby('dex1')。sum()? –

+1

是的,确切地说。我添加链接。 – jezrael