Pandas重采样生成周度收盘价后赋值日线数据遇NaN错误求助
解决日线数据匹配周度收盘价出现NaN的问题
问题原因
你通过weekly = daily.resample("W").last()生成的周度收盘价数据,索引是每周的最后一天(默认是周日),而日线数据的索引是每个交易日。直接执行daily["weekly_close"] = weekly["Close"]时,只有日线中刚好是周日的日期能匹配到周收盘价,其他日期因为索引不对应,就会出现NaN。
解决方案
下面三种方法都能实现将每周收盘价赋值到该周所有交易日的日线数据中:
方法一:重索引+前向填充
daily["weekly_close"] = weekly["Close"].reindex(daily.index).ffill()先把周度数据的索引对齐到日线的日期,再用前向填充把周收盘价覆盖到该周后续的交易日。
方法二:resample结合transform
daily["weekly_close"] = daily["Close"].resample("W").transform("last")直接按周对日线收盘价分组,取每组最后一个值(即周收盘价),并自动赋值给组内所有行,一步到位。
方法三:groupby按周分组
daily["weekly_close"] = daily.groupby([daily.index.year, daily.index.isocalendar().week])["Close"].transform("last")按年份和周数分组,取每组最后一个收盘价,映射回对应组的所有日线数据行。
内容的提问来源于stack exchange,提问作者Ali Farhan
相关产品推荐
相关产品推荐

