2017-06-26 23 views
0

我想在我的數據框中創建一個名爲'test'的新列,該列等於從列號9開始的所有列的總和,數據幀的結尾。這些列都是數據類型float。Python:創建新列等於從列號9開始的所有列的總和

下面是我試過的代碼,但沒有奏效 - >給我回所有NaN值在「測試」列:

df_UBSrepscomp['test'] = df_UBSrepscomp.iloc[:, 9:].sum() 

回答

0

如果我理解你的問題,你想要的行從第9列開始總和。我相信你想要.sum(axis=1)。爲了便於閱讀,請參閱下面的示例,使用列2而不是9。

df = DataFrame(npr.rand(10, 5)) 
df.iloc[0:3, 0:4] = np.nan # throw in some na values 
df.loc[:, 'test'] = df.iloc[:, 2:].sum(axis=1); print(df) 
     0  1  2  3  4  test 
0  NaN  NaN  NaN  NaN 0.73046 0.73046 
1  NaN  NaN  NaN  NaN 0.79060 0.79060 
2  NaN  NaN  NaN  NaN 0.53859 0.53859 
3 0.97469 0.60224 0.90022 0.45015 0.52246 1.87283 
4 0.84111 0.52958 0.71513 0.17180 0.34494 1.23187 
5 0.21991 0.10479 0.60755 0.79287 0.11051 1.51094 
6 0.64966 0.53332 0.76289 0.38522 0.92313 2.07124 
7 0.40139 0.41158 0.30072 0.09303 0.37026 0.76401 
8 0.59258 0.06255 0.43663 0.52148 0.62933 1.58744 
9 0.12762 0.01651 0.09622 0.30517 0.78018 1.18156 
+0

完美地工作!謝謝 ;爲什麼你需要添加(axis = 1)?這是什麼意思? – PineNuts0

+0

[這](https://stackoverflow.com/questions/22149584/what-does-axis-in-pandas-mean)對'axis = 0'和'axis = 1'是一個很好的演練。 –

相關問題