Pandas合并两个日期DataFrame绘图时曲线不衔接如何解决?

问题原因
extend.set_index('Date')未接收返回值:Pandas的set_index方法默认不会修改原DataFrame,执行后extend的索引仍然是默认的整数0、1,绘图时x轴会直接使用整数索引,无法和stock的日期索引匹配对齐。- 日期格式不统一:你定义extend时
Date列为字符串类型,而stock的索引是datetime64类型,即使设置了索引也无法正常识别为连续的时间轴。
修复方案
修改extend的创建和索引设置逻辑即可,完整可运行代码如下:
import pandas_datareader as web import pandas as pd import matplotlib.pyplot as plt stock = web.DataReader('MMM', data_source="yahoo", start='2021-01-01', end='2021-11-12') stock = stock.filter(["Adj Close"]) # 先将日期转为datetime格式,再设置为索引并覆盖原extend对象 extend = pd.DataFrame({'Date': ["2021-11-15", "2021-11-16"], 'Adj Close': [170, 171]}) extend['Date'] = pd.to_datetime(extend['Date']) extend = extend.set_index('Date') plt.figure(figsize=(16, 8)) plt.plot(stock["Adj Close"]) plt.plot(extend["Adj Close"]) plt.show()
你也可以选择将两个DataFrame拼接后一次性绘图,效果一致:
full_data = pd.concat([stock, extend]) plt.figure(figsize=(16, 8)) plt.plot(full_data["Adj Close"]) plt.show()
内容的提问来源于stack exchange,提问作者Martin Kunze
相关产品推荐
相关产品推荐

