You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas多列重采样分组:按地点、年月聚合分类与状态计数

解决Pandas按地点+年月统计分类与状态计数的问题

问题说明

需要将以下Pandas DataFrame:

import pandas as pd

df = pd.DataFrame({
        'date': [
           '2019-08-01', '2019-12-01',
           '2019-23-01', '2019-15-01',
           '2020-26-02', '2020-10-10',
           '2020-08-10', '2021-01-04'
        ],
        'loc': [
           'axp','axp', 'axp', 'axp',
           'axe', 'axp', 'axp', 'axe'
        ],
        'category': [
           'domestic', 'domestic', 'domestic', 
           'domestic',
           'wild', 'domestic', 'domestic', 'wild'
        ],
        'status': [
           'found', 'found', 'not found', 'found',
           'found', 'found', 'found', 'not found'
        ]
    })

转换为按loc结合年月统计category和status计数的格式,目标格式如下:

loc_mnth_yrn_domesticn_wildn_foundn_not_found
axp_01_20194031
axe_02_20200110
axp_10_20202020
axe_04_20210101

用户尝试了以下代码但未得到预期结果:

df = df.resample('M')['category'].value_counts().to_frame().rename({'category':'count'},axis=1)
df = df.pivot_table(index='date', columns='category')

问题分析

用户代码存在以下问题:

  1. 未处理错误日期格式:原始date列是年-日-月格式,直接使用resample会解析错误,且未将date设为索引。
  2. 缺失地点维度:没有按loc分组统计,仅按日期重采样,忽略了地点的分组需求。
  3. 未覆盖状态统计:只处理了category列,没有对status列进行计数。

解决方案

以下是完整的正确代码:

import pandas as pd

# 1. 修复日期格式:原始date为年-日-月,指定format转换为datetime类型
df['date'] = pd.to_datetime(df['date'], format='%Y-%d-%m')

# 2. 生成复合分组键:loc_月_年
df['loc_mnth_yr'] = df['loc'] + '_' + df['date'].dt.strftime('%m_%Y')

# 3. 分别统计category和status的各类计数
# 对category做独热编码后按复合键求和
category_counts = pd.get_dummies(df['category'], prefix='n').groupby(df['loc_mnth_yr']).sum()
# 对status做独热编码后按复合键求和
status_counts = pd.get_dummies(df['status'], prefix='n').groupby(df['loc_mnth_yr']).sum()

# 4. 合并结果并调整列顺序
result = pd.concat([category_counts, status_counts], axis=1).reset_index()
result = result[['loc_mnth_yr', 'n_domestic', 'n_wild', 'n_found', 'n_not_found']]

print(result)

运行结果

loc_mnth_yr  n_domestic  n_wild  n_found  n_not_found
0  axp_01_2019           4       0        3            1
1  axp_10_2020           2       0        2            0
2  axe_02_2020           0       1        1            0
3  axe_04_2021           0       1        0            1

内容的提问来源于stack exchange,提问作者emmasa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:43:29