如何用Python Pandas按唯一日期统计多列?pd.value_counts仅支持单列统计
按唯一日期统计多列数据的解决方案
Hey there! 你想要按日期聚合统计good、bad、normal这几列的总数对吧?pd.value_counts确实只适合单列的频次统计,不过咱们用Pandas的分组聚合功能就能轻松搞定这个需求。
核心思路
你的数据里每行对应一条记录,good/bad/normal列用0和1标记状态,所以只需要按date分组后对这三列求和,就能得到每个日期下各状态的总数量。
方法一:使用groupby + sum(最直接)
这是最常用的分组统计方式,代码简洁高效:
import pandas as pd # 假设你已经读取并整理好df2数据 # 按date分组,指定需求统计的列并求和 result = df2.groupby('date')[['good', 'bad', 'normal']].sum().reset_index() print(result)
运行后会输出类似这样的结果:
date good bad normal 0 2017-09-16 0 1 1 1 2017-09-20 2 0 0 2 2017-09-22 0 0 1
方法二:使用pivot_table(更灵活的透视统计)
如果之后需要扩展统计逻辑(比如同时求均值、计数),pivot_table会更灵活,效果和上面一致:
result = pd.pivot_table( df2, index='date', values=['good', 'bad', 'normal'], aggfunc='sum' ).reset_index() print(result)
小提示
注意你代码里的"normal":df.norma应该是笔误哦,要改成df.normal,不然会因为找不到对应列报错~
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

