无需将列重命名为q前缀,能否实现Pandas筛选与分组聚合?
解决方案:无需重命名列即可实现筛选+分组聚合
当然可以不用把列重命名成q前缀,直接通过指定目标列列表就能实现需求,逻辑反而更清晰。
具体实现步骤:
- 先定义好需要做聚合计算的目标列清单(就是你原本要改成q1-q6的那些列):
target_cols = ['Name', 'Age', 'Weight', 'Height', 'DOB', 'Donor']
- 直接通过两种写法完成分组聚合:
写法一(推荐,逻辑更直观):
df_result = df.groupby(['Type', 'DATE'])[target_cols].agg(lambda x: x.eq(4).sum() / x.count())
写法二:
df_result = df[target_cols].groupby([df['Type'], df['DATE']]).agg(lambda x: x.eq(4).sum() / x.count())
补充提醒:
你原来的代码有个小问题:把Name重命名成q1之后,groupby里还写df['Name']会触发列不存在的报错,因为此时列名已经变成q1了。用上面的方法可以避免这个问题,还能明确区分分组用的列(比如Type、DATE)和需要聚合计算的列。
内容的提问来源于stack exchange,提问作者Skywalker5032
相关产品推荐
相关产品推荐

