如何使用pandas按ID扁平化表格 将同ID多TIME记录拆分为多列
实现方案
你要的按ID分组扁平化转多列宽表的需求,可以通过分组生成序号+透视表的方案实现,完整代码如下:
首先导入依赖并构造测试数据:
import pandas as pd # 你的输入数据 df = pd.DataFrame({ 'ID': [1,1,2,3,3,4], 'TIME': ['10:12', '4:43', '9:12', '1:43', '16:47', '2:55'] })
然后执行转换逻辑:
# 按ID分组,为组内每条时间记录生成顺序编号 df['col_seq'] = df.groupby('ID').cumcount() + 1 # 透视转换为宽表 res = df.pivot(index='ID', columns='col_seq', values='TIME') # 重命名列符合你的要求 res.columns = [f'Time_{i}' for i in res.columns] # 重置索引将ID恢复为普通列 res = res.reset_index() # 可选:如果需要空值位置显示为空字符串而非NaN,加上这行 res = res.fillna('')
输出结果符合要求:
| ID | Time_1 | Time_2 |
|---|---|---|
| 1 | 10:12 | 4:43 |
| 2 | 9:12 | |
| 3 | 1:43 | 16:47 |
| 4 | 2:55 |
注:你给出的示例输出中ID2的Time_1值为4:43属于笔误,以上结果完全匹配输入数据逻辑
内容的提问来源于stack exchange,提问作者Raven
相关产品推荐
相关产品推荐

