pandas:追加新的行小计列

时间:2016-05-17 13:05:38

标签: python pandas

这与this question非常相似,只是我希望我的代码能够应用于数据帧的长度,而不是特定的列。

我有一个DataFrame,我正在尝试将每一行的总和作为列追加到数据框中。

df = pd.DataFrame([[1,0,0],[20,7,1],[63,13,5]],columns=['drinking','drugs','both'],index = ['First','Second','Third'])

        drinking  drugs  both
First          1      0     0
Second        20      7     1
Third         63     13     5

期望的输出:

        drinking  drugs  both  total
First          1      0     0      1
Second        20      7     1     28
Third         63     13     5     81

当前代码:

df['total'] = df.apply(lambda row: (row['drinking'] + row['drugs'] + row['both']),axis=1)

这很有效。但是,如果我有另一个数据框,有七列,不称为“饮酒”,“药物”或“两者”,该怎么办?是否可以调整此功能以使其适用于数据帧的长度?这样我可以根据任何数据帧使用该函数,具有不同数量的列,而不仅仅是具有称为“饮用”,“药物”和“两者”的列的数据框?

类似的东西:

df['total'] = df.apply(for col in df: [code to calculate sum of each row]),axis=1)

2 个答案:

答案 0 :(得分:4)

您可以使用sum

df['total'] = df.sum(axis=1) 

如果您只需要对某些列求和,请使用subset:

df['total'] = df[['drinking', 'drugs', 'both']].sum(axis=1) 

答案 1 :(得分:0)

这样的事情:

df.loc[:, 'Total'] = df.sum(axis=1)

输出:

Out[4]: 
        drinking  drugs  both  Total
First          1      0     0      1
Second        20      7     1     28
Third         63     13     5     81

它将逐行汇总所有列。