Pandas DataFrame特定格式转换:按日期规整Leg数据
解决方案
你可以使用Pandas的pivot方法直接实现这种数据重塑,它能将指定的行、列和值重新排列成你需要的格式,缺失的自动填充为NaN(对应你需求里的X):
import pandas as pd data = [[1,11,2],[2,11,3],[1,22,7],[2,22,8],[3,22,9],[1,33,15],[2,33,16],[3,33,17],[4,33,18],[5,33,19]] df = pd.DataFrame(data,columns=['Date','Leg','Amt']) # 执行透视转换 result = df.pivot(index='Date', columns='Leg', values='Amt') print(result)
输出结果:
Leg 11 22 33 Date 1 2.0 7.0 15.0 2 3.0 8.0 16.0 3 NaN 9.0 17.0 4 NaN NaN 18.0 5 NaN NaN 19.0
如果需要把NaN替换成你指定的X,可以追加fillna方法:
result_with_x = result.fillna('X') print(result_with_x)
输出结果:
Leg 11 22 33 Date 1 2 7 15 2 3 8 16 3 X 9 17 4 X X 18 5 X X 19
说明
pivot方法的参数:index:指定作为结果行索引的列(这里是Date)columns:指定作为结果列的列(这里是Leg)values:指定填充到单元格中的值(这里是Amt)
- 如果你的数据存在
Date和Leg的重复组合(即同一个日期同一个Leg有多条Amt记录),可以改用pivot_table并指定聚合方式(比如aggfunc='sum')来处理重复值。
内容的提问来源于stack exchange,提问作者007
相关产品推荐
相关产品推荐

