Python:创建新列等于从第9列开始的所有列的总和

时间:2017-06-26 00:11:20

标签: python indexing sum field slice

我想在我的数据框中创建一个名为'test'的新列,它等于从第9列开始到数据帧结尾的所有列的总和。这些列都是数据类型float。

以下是我尝试的代码,但它不起作用 - >让我回到'测试'栏中的所有NaN值:

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

1 个答案:

答案 0 :(得分: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