如何使用Pandas groupby()实现分组列值运算及NaN默认值处理
问题分析与解决方案
你的代码逻辑存在错误:groupby("A")["A"].count()获取的是每个分组的行数,再与填充后的count_of_elmt_A列相乘,完全偏离了“先填充NaN为1,再计算分组总和”的需求。
正确实现步骤
- 第一步:将
count_of_elmt_A列中的NaN值替换为1 - 第二步:按
A列分组,对处理后的count_of_elmt_A列求和
代码实现
方法一(不修改原DataFrame)
import pandas as pd data = {"A":["x","x","y","z"], "B": ["", "k", "l", "j"], "count_of_elmt_A": [10, 3, None, 4]} df = pd.DataFrame(data) # 先填充NaN为1,再按A分组求和并转为整数 result = df["count_of_elmt_A"].fillna(1).groupby(df["A"]).sum().astype(int) print(result)
方法二(修改原DataFrame后分组)
import pandas as pd data = {"A":["x","x","y","z"], "B": ["", "k", "l", "j"], "count_of_elmt_A": [10, 3, None, 4]} df = pd.DataFrame(data) # 先填充NaN为1 df["count_of_elmt_A"] = df["count_of_elmt_A"].fillna(1) # 按A分组求和并转为整数 result = df.groupby("A")["count_of_elmt_A"].sum().astype(int) print(result)
输出结果
运行后会得到预期的结果:
A x 13 y 1 z 4 Name: count_of_elmt_A, dtype: int64
内容的提问来源于stack exchange,提问作者luanpo1234
相关产品推荐
相关产品推荐

