Pandas只在特定列进行求和和计数

4

我刚开始学习pandas,这是一个非常基础的问题。相信我,我已经搜索了答案,但找不到。

请你运行这个Python代码吗?

import pandas as pd

df = pd.DataFrame({'A':[1,0], 'B':[2,4], 'C':[4,4], 'D':[1,4],'count__4s_abc':[1,2],'sum__abc':[7,8]})

df

我要创建一个名为 'count__4s_abc' 的列,用于计算只在 A-C 列中出现的数字 4 出现的次数(忽略 D 列)。

我要创建一个名为 'sum__abc' 的列,用于计算只在 A-C 列中的金额总和(忽略 D 列)。

非常感谢您的帮助!

2个回答

4
使用 drop
df.assign(
    count__4s_abc=df.drop('D', 1).eq(4).sum(1),
    sum__abc=df.drop('D', 1).sum(1)
)

或者明确选择这三列。

df.assign(
    count__4s_abc=df[['A', 'B', 'C']].eq(4).sum(1),
    sum__abc=df[['A', 'B', 'C']].sum(1)
)

或使用iloc来获取前3列。

df.assign(
    count__4s_abc=df.iloc[:, :3].eq(4).sum(1),
    sum__abc=df.iloc[:, :3].sum(1)
)

所有人都给

   A  B  C  D  count__4s_abc  sum__abc
0  1  2  4  1              1         7
1  0  4  4  4              2         8

2

1
@roganjosh,感谢您的评论 - 我尝试相应地改进了我的答案... - MaxU - stand with Ukraine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接