2017-03-24 70 views
1

給定一個示例數據幀:添加行與以下的值到一個大熊貓數據幀

import pandas as pd 
import numpy as np 

values = np.array([ 
    [0, 0.5, 1, 0, 0, 3], 
    [1, 0, 0, 1, 1, 0 ], 
    [0, 0.5, 0, 0, 2, 1], 
    [0, 0, 0, 0, 4, 0],   
]) 

indexes= 'a','b','c','d' 

columns='ab','bc','cd','de','ef','fg' 

df = pd.DataFrame(index=indexes,columns=columns, data=values) 

print(df) 

它看起來像:

ab bc cd de ef fg 
a 0.0 0.5 1.0 0.0 0.0 3.0 
b 1.0 0.0 0.0 1.0 1.0 0.0 
c 0.0 0.5 0.0 0.0 2.0 1.0 
d 0.0 0.0 0.0 0.0 4.0 0.0 

期望的輸出:

ab bc cd de ef fg 
a 0.0 0.5 1.0 0.0 0.0 3.0 
b 1.0 0.0 0.0 1.0 1.0 0.0 
c 0.0 0.5 0.0 0.0 2.0 1.0 
d 0.0 0.0 0.0 0.0 4.0 0.0 
e Nan Nan Nan NAn 7.0 4.0 

是它在某種程度上可能添加一行只顯示最後兩列的總和? (當然,在各欄下方)

感謝您的關注!

+1

最後兩列或最後兩行?也許給你想要的輸出。 – Psidom

+0

好點,@Psidom ... – bernie

+0

對不起,我在做的是我想添加一行,在那裏顯示第二列最後一列的值(第二列以下)的總和,以及最後一列的總和列的值(低於最後一列)。保持行的其他單元格爲空。希望現在明確! – Paauulus

回答

1

編輯:ohhh。感謝您的澄清。您創建一個新行並將其分配給最後兩列的總和。 iloc索引器格式爲[row,col]。所以我們想要:所有行,但只有最後兩列-2:

df.loc['e'] = df.iloc[:,-2:].sum() 

結果:

>>> df 
    ab bc cd de ef fg 
a 0.0 0.5 1.0 0.0 0.0 3.0 
b 1.0 0.0 0.0 1.0 1.0 0.0 
c 0.0 0.5 0.0 0.0 2.0 1.0 
d 0.0 0.0 0.0 0.0 4.0 0.0 
e NaN NaN NaN NaN 7.0 4.0 

老答案:
我想你指的是最後兩行...

您可以使用pd.concat這裏

pd.concat([df,df.iloc[-2,:] + df.iloc[-1:]]) 

結果:

>>> pd.concat([df,df.iloc[-2,:] + df.iloc[-1:]]) 
    ab bc cd de ef fg 
a 0.0 0.5 1.0 0.0 0.0 3.0 
b 1.0 0.0 0.0 1.0 1.0 0.0 
c 0.0 0.5 0.0 0.0 2.0 1.0 
d 0.0 0.0 0.0 0.0 4.0 0.0 
d 0.0 0.5 0.0 0.0 6.0 1.0 
+0

我澄清(希望)我的觀點上面的評論 – Paauulus

+0

感謝您的答案!它完美地工作 – Paauulus

+0

@Paauulus:你非常歡迎。快樂的編碼給你。 – bernie

0

您可以使用LOC

df.loc['sum_c_d'] = df[-2:].sum() 


     ab bc cd de ef fg 
a  0 0.5 1 0 0 3 
b  1 0.0 0 1 1 0 
c  0 0.5 0 0 2 1 
d  0 0.0 0 0 4 0 
sum_c_d 0 0.5 0 0 6 1