如何对DataFrame分组后将组内所有数据展开为多列展示
实现方案
核心思路
对hour列分组后给组内每行生成递增序号,再通过透视操作将行转列即可。
完整代码示例
import pandas as pd # 模拟你的原始数据 df = pd.DataFrame({ 'hour': [1, 1, 2, 2, 2, 24], 'x': [122, 133, 234, 245, 256, 232] }) # 步骤1:为每个hour分组内的行生成序号,从1开始计数 df['seq'] = df.groupby('hour').cumcount() + 1 # 步骤2:透视转为宽表,重命名列名 result = df.pivot(index='hour', columns='seq', values='x')\ .add_prefix('x')\ .reset_index() # 可选:如果希望空值位置填充为空白而非NaN,可在add_prefix前加上.fillna('') # 示例:result = df.pivot(index='hour', columns='seq', values='x').fillna('').add_prefix('x').reset_index()
输出效果
最终result的结构和你需要的格式完全一致:
| hour | x1 | x2 | x3 |
|---|---|---|---|
| 1 | 122 | 133 | NaN |
| 2 | 234 | 245 | 256 |
| 24 | 232 | NaN | NaN |
内容的提问来源于stack exchange,提问作者xing haochen
相关产品推荐
相关产品推荐

