如果我有一个类似的 Dataframe
Apples Bananas Grapes Kiwis
2 3 nan 1
1 3 7 nan
nan nan 2 3
我想添加一个这样的列
Apples Bananas Grapes Kiwis Fruit Total
2 3 nan 1 6
1 3 7 nan 11
nan nan 2 3 5
我想你可以使用df['Apples'] + df['Bananas']
等等,但是我的实际 Dataframe 比这个大得多。我希望像df['Fruit Total']=df[-4:-1].sum
这样的公式可以在一行代码中完成这个任务。但是没有成功。有没有办法不显式地对所有列求和呢?
6条答案
按热度按时间rqdpfwrv1#
可以先按
iloc
选择,然后按sum
选择:对于所有列的总和,用途:
mrzz3bfm2#
这可能对初学者有帮助,所以为了完整性起见,如果你知道列名(例如,它们在列表中),你可以用途:
这给了你灵活性你使用哪些列,因为你只需要操作列表
column_names
,你可以做的事情,如只挑选列名称中的字母'a'。这样做的另一个好处是,它更容易让人们通过列名称理解他们在做什么。将此与list(df.columns)
结合起来,以获得列表格式的列名称。因此,如果你想删除最后一列,你所要做的就是:li9yvcax3#
在不知道列数甚至不使用iloc的情况下也可以执行此操作:
5t7ly7z54#
在原始df上使用
df['Fruit Total']= df.iloc[:, -4:-1].sum(axis=1)
不会添加最后一列('Kiwis '),您应该使用df.iloc[:, -4:]
来选择所有列:tjvv9vkg5#
如果你想在不知道 Dataframe 的形状/大小的情况下得出总数,我想建立在Ramon的答案上。我将在下面使用他的答案,但修复一个不包括总数最后一列的项目。我已经从形状中删除了-1:
对此:
x一个一个一个一个x一个一个二个x
然后它会给出正确的总数,而不会跳过最后一列。
p8h8hvxi6#
这可能是一个更容易解决的方法,并且它还将处理其他不需要的数据类型: