我想在我的数据框中创建一个名为'test'的新列,它等于从第9列开始到数据帧结尾的所有列的总和。这些列都是数据类型float。
以下是我尝试的代码,但它不起作用 - >让我回到'测试'栏中的所有NaN值:
df_UBSrepscomp['test'] = df_UBSrepscomp.iloc[:, 9:].sum()
答案 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