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

拆分Pandas列并按月份分组统计拆分值生成新列

按月份统计错误类型并重塑DataFrame

核心步骤

  1. 统一日期格式为年月(如2020-01),作为分组依据
  2. 以年月为行、错误类型为列,统计各类型错误的月度数量

完整代码实现

先导入依赖并重构示例数据:

import pandas as pd
from pandas import Timestamp

# 重构用户提供的示例数据
data = pd.DataFrame({
    'Error \nNumber': {0: '2122', 1: '2123', 2: '2124', 3: '2125', 4: '2126'},
    'Date': {0: Timestamp('2020-01-09 00:00:00'),
             1: Timestamp('2020-01-09 00:00:00'),
             2: Timestamp('2020-02-09 00:00:00'),
             3: Timestamp('2020-03-09 00:00:00'),
             4: Timestamp('2020-04-09 00:00:00')},
    'Type of error ': {0: 'NHS Spine check - External error',
                       1: 'EP3- Run failure',
                       2: 'NHS Spine check - External error',
                       3: 'NHS Spine check - External error',
                       4: 'NHS Spine check - External error'}
})

执行数据处理:

# 1. 将日期转换为年月格式(字符串类型,方便展示)
data['Date'] = data['Date'].dt.strftime('%Y-%m')

# 2. 用透视表统计月度错误数量
result = pd.pivot_table(
    data,
    index='Date',
    columns='Type of error ',
    values='Error \nNumber',  # 选任意列用于计数,这里用错误编号
    aggfunc='count',
    fill_value=0  # 空值填充为0
).reset_index()

# 可选:清理列名的多余空格
result.columns = ['Date'] + [col.strip() for col in result.columns[1:]]

print(result)

输出示例

Date  NHS Spine check - External error  EP3- Run failure
0  2020-01                                1                  1
1  2020-02                                1                  0
2  2020-03                                1                  0
3  2020-04                                1                  0

补充说明

  • 若需保留Period类型的年月(而非字符串),可替换日期处理代码为data['Date'] = data['Date'].dt.to_period('M')
  • aggfunc='count'可替换为len,效果一致;如果需要去重统计错误编号,可改用aggfunc='nunique'
  • 透视表会自动识别所有错误类型并生成对应列,无需手动指定

内容的提问来源于stack exchange,提问作者Manolo Dominguez Becerra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:15:17