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

使用Python拆分聚合值至独立行并实现数据透视需求

解决方案

要实现将聚合值拆分到独立行并完成透视,分三步处理即可:

1. 宽表转窄表

先把多日期列的宽表转换成包含计数的窄表,保留ID、type、日期和对应数值:

import pandas as pd
import numpy as np

# 假设原始数据已加载到df变量中
df_long = df.melt(id_vars=['ID', 'type'], var_name='date', value_name='count')
# 偏好janitor的话也可以这么写:
# df_long = df.pivot_longer(index=['ID', 'type'], names_to='date', values_to='count', sort_by_appearance=True)

2. 过滤无效记录

直接去掉计数为0的行,这些不需要生成对应记录:

df_filtered = df_long[df_long['count'] > 0]

3. 根据计数值重复行

用numpy.repeat高效生成重复行,最后清理多余列并重置索引:

df_result = df_filtered.loc[np.repeat(df_filtered.index, df_filtered['count'])]
df_result = df_result.drop('count', axis=1).reset_index(drop=True)

原代码问题说明

你之前的pivot_longer存在两个问题:

  • names_pattern用了下划线匹配的正则,但原列名是空格分隔(比如Q1 24),正则不匹配;
  • 只指定ID作为索引,没包含type,导致无法关联类型和对应计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:30:48