如何将准日度汽油价格DataFrame填充为小时级以匹配电价数据?
问题
我有一份本地汽油价格的DataFrame,想和电价DataFrame结合分析,但汽油数据是准日度,电价是小时级。需要把每日汽油价格值复制,适配到电价DataFrame的小时级维度,或者有没有更智能的方式直接在电价DataFrame里引用汽油价格?
我的汽油数据如下:
Price Date 2022-10-20 16.19 2022-10-19 16.49 2022-10-18 16.69 2022-10-15 16.99
因为要做小时级对比分析,所以把电价平均到日度的方案不可行。我尝试了下面的代码,但执行失败:
df.set_index('DateTime').resample('H').pad()
解决方案
方法1:将汽油数据重采样为小时级
你的代码执行失败大概率是因为汽油数据的索引已经是Date(日期类型),不需要再用set_index('DateTime')。正确操作步骤如下:
- 确保汽油数据的索引是日期时间类型(如果不是先转换):
import pandas as pd # 假设你的汽油DataFrame叫gas_df gas_df.index = pd.to_datetime(gas_df.index)
- 重采样到小时级并填充值(用
pad()或ffill()向前填充,保证当天24小时都用同一日的汽油价格):
# 如果要匹配电价数据的时间范围,假设电价DataFrame叫elec_df gas_hourly = gas_df.resample('H').pad().reindex(elec_df.index)
生成的gas_hourly会和电价DataFrame的小时级索引完全匹配,之后直接合并即可:
combined_df = pd.concat([elec_df, gas_hourly], axis=1)
方法2:直接在电价DataFrame中匹配日期引用汽油价格
不需要提前扩展汽油数据,而是通过提取电价时间的日期部分,直接关联汽油价格,内存占用更小,适合数据量较大的场景:
- 从电价DataFrame的时间索引(假设是
DateTime)中提取日期:
elec_df['Date'] = elec_df.index.date
- 用
merge方法关联汽油价格(能自动处理缺失日期的情况):
# 把汽油数据的索引转为列,方便合并 gas_df_reset = gas_df.reset_index().rename(columns={'Date': 'Date'}) # 合并两个DataFrame combined_df = elec_df.merge(gas_df_reset, on='Date', how='left')
内容的提问来源于stack exchange,提问作者GregersDK
相关产品推荐
相关产品推荐

