如何使用pandas按Date和Start Time两列分组统计各组合出现次数
错误原因
你原有代码的核心问题是Start Time字段为字符串类型,仅按Date分组后调用sum()会触发字符串拼接逻辑,而非统计次数,且没有同时按Date和Start Time两个维度分组,无法得到双维度匹配的计数结果。
修正后代码
import pandas as pd df = pd.read_excel(xls) # 按日期+开始时间双维度分组,统计每组出现次数 total = df.groupby(['Date', 'Start Time']).size().reset_index(name='出现次数') # 调整显示配置 pd.set_option("display.max_rows", None, "display.max_columns", None) # 如需对齐示例的列间距,可替换print(total)为下面这行代码 # print(total.to_string(col_space={'Date':12, 'Start Time':15, '出现次数':5}, index=False)) print(total) input()
逻辑说明
groupby(['Date', 'Start Time'])按日期、开始时间两个维度做分组,保证每个分组对应唯一的「日期+开始时间」组合size()统计每个分组的行数,即该组合的总出现次数reset_index(name='出现次数')将分组生成的多级索引转为普通列,同时自定义计数字段的名称,匹配输出需求
内容的提问来源于stack exchange,提问作者Rocky5
相关产品推荐
相关产品推荐

