难以绘制出按文本/名称字段和日期范围分组的值。问题在于,虽然我可以按名称分组并生成某些日期范围的图,但有些情况下分组包含缺少的日期值(仅仅是整个数据集的性质)。
也就是说,我可以很好地为一些分组值绘制date_range('10 / 1/2013','10 / 31/2013'),但有些情况下有在该范围内没有'10 / 15/2013',因此将抛出本文标题中提到的错误。
感谢您的任何意见!
plt.rcParams['legend.loc'] = 'best'
dtable = pd.io.parsers.read_table(str(datasource), sep=',')
unique_keys = np.unique(dtable['KEY'])
index = date_range(d1frmt, d2frmt)
for key in unique_keys:
values = dtable[dtable['KEY'] == key]
plt.figure()
plt.plot(index, values['VAL']) <--can fail if index is missing a date
plt.xlim(xmin=d1frmt,xmax=d2frmt)
plt.xticks(rotation=270)
plt.xticks(size='small')
plt.legend(('H20'))
plt.ylabel('Head (ft)')
plt.title('Well {0}'.format(key))
fig = str('{0}.png'.format(key))
out = str(outputloc) + "\\" + str(fig)
plt.savefig(out)
plt.close()
答案 0 :(得分:0)
您必须在您的dtable中包含日期列或索引。否则你不知道values['Val']
中哪个属于哪个日期。
如果你这样做,有两种方法。
由于你根据一个键创建了一个子集,你可以使用该子集的索引(如果它是一个日期时间!):
plt.plot(values.index.to_pydatetime(), values['VAL'])
或将子集重新索引到“目标”范围“:
values = values.reindex(index)
plt.plot(index.to_pydatetime(), values['VAL'])
默认情况下,reindex会将NaN值作为缺失数据插入。
如果你提供一个有用的例子会更容易,如果不知道你的Dataframe是什么样的话,有点难以回答。