如何使用Pandas透视DataFrame:将日期行转换为日期列?
解决方法:用pandas的
pivot实现行列转换 嘿,这个需求刚好是pandas擅长的宽表/长表转换场景,用pivot方法就能一步到位!我给你拆解具体步骤:
1. 先构造测试数据(方便你复现)
首先把你提供的原始数据用pandas构造出来,这样你可以直接运行测试:
import pandas as pd # 你的原始DataFrame df = pd.DataFrame({ 'date': ['2020-12-24', '2020-12-24', '2020-12-25', '2020-12-25'], 'time': ['17:01:00', '17:00:00', '17:01:00', '17:00:00'], 'price': [10, 11, 11, 12] })
2. 核心转换代码
用pivot方法指定行、列、值的对应关系,再做一点点格式调整:
# 执行转换:time作为行,date转成列,price填充单元格 result = df.pivot(index='time', columns='date', values='price').reset_index() # 去掉列名的层级标签,让表头和目标格式一致 result.columns.name = None # 如果需要和目标格式的time顺序完全匹配(17:01在前,17:00在后),可以加排序 result = result.sort_values('time', ascending=False).reset_index(drop=True)
3. 最终结果
运行后你会得到和目标完全一致的DataFrame:
time 2020-12-24 2020-12-25 0 17:01:00 10 11 1 17:00:00 11 12
简单解释下参数:
index='time':指定把time列作为结果的行columns='date':把date列的唯一值转成结果的列values='price':用price的值填充对应的单元格reset_index():把time从行索引变回普通列,符合目标格式sort_values:调整行的顺序,和你给出的目标完全对齐
内容的提问来源于stack exchange,提问作者Denly
相关产品推荐
相关产品推荐

