Pandas按days_from_event绘时间序列分栏子图KeyError报错如何解决
报错原因
- pandas的
DataFrame.plot方法的x参数仅接收列名字符串,默认会自动把DataFrame的索引作为x轴取值,你手动传入了完整的时段索引对象,pandas会尝试在列中查找这些时段值,匹配失败就触发KeyError。
修复方案
方案1(推荐:子图标注天数更直观)
预处理时直接将days_from_event作为转置后的列名,后续绘图不需要额外指定列,子图会自动标注对应距离事件的天数:
# 保存距离事件天数作为子图标签 day_labels = df_mean_test['days_from_event'].astype(str).tolist() # 提取时段列转置,设置列名为天数标签 df_plot = df_mean_test[['9am', '10am', '11am', '12pm', '1pm', '2pm', '3pm', '4pm']].transpose() df_plot.columns = day_labels # 绘图 df_plot.plot( kind='line', subplots=True, layout=(1,7), xlabel='session hours', ylabel='percent change', figsize=(22, 3), sharey=True )
方案2(直接修复原代码)
删掉x参数即可,默认会将转置后的时段索引作为x轴:
df_mean_test.plot( y = ['0','1','2','3','4','5','6'], kind = 'line', subplots = True, layout = (1,7), xlabel = 'session hours', ylabel = 'percent change' )
内容的提问来源于stack exchange,提问作者jd_h2003
相关产品推荐
相关产品推荐

