如何用Pandas实现类似Excel COUNTIFS的按姓名统计空值并输出至其他工作表?
解决方案:按姓名统计指定列空值并写入Excel
结论先行:完全不需要使用字典,直接通过Pandas读取Excel文件就能完成你的需求,步骤清晰且高效。
具体实现步骤
1. 读取Excel文件
用pd.read_excel()直接读取目标Excel文件,无需额外转字典。
2. 按姓名分组统计空值
通过groupby()按姓名分组,结合isna().sum()统计指定列的空值数量。
3. 将结果写入新工作表
用to_excel()将统计结果写入原文件的新工作表,或单独的新文件。
完整代码示例
模拟Excel读取场景(含你的测试数据)
import pandas as pd # 实际使用时替换成你的Excel文件路径 # df = pd.read_excel("你的数据源文件.xlsx") # 以下是你提供的测试数据 df = pd.DataFrame({ "Name": ["Alice", "Bob", "Jas", "Carl", "Bob", "Jon", "Alice"], "Age": [23, 24, 22, None, None, 27, 23], "Weight": [71, 67, 51, 75, None, 67, 71], "Height": [49, 59, 54, None, 59, 56, 49] }) # 按Name分组,统计Age列的空值数量 null_count = df.groupby("Name")["Age"].apply(lambda x: x.isna().sum()).reset_index(name="Age空值数量") # 将结果写入Excel的新工作表(命名为"空值统计") with pd.ExcelWriter("你的输出文件.xlsx", mode="w") as writer: df.to_excel(writer, sheet_name="原始数据", index=False) null_count.to_excel(writer, sheet_name="空值统计", index=False)
扩展说明
如果需要同时统计多列(比如Age、Weight)的空值,只需修改分组统计部分:
# 批量统计多列空值 multi_null_count = df.groupby("Name")[["Age", "Weight"]].apply(lambda x: x.isna().sum()).reset_index()
内容的提问来源于stack exchange,提问作者Hades
相关产品推荐
相关产品推荐

