ValueError:float()的无效文字:在pandas中添加注释时

时间:2017-05-14 12:58:56

标签: python-2.7 pandas matplotlib dataframe jupyter

当我尝试在我的情节中添加注释时出现此错误 - ValueError: invalid literal for float(): 10_May

我的数据框:

enter image description here

我的代码(我在绘制之前使用to_datetimestrftime,因为我需要对存储为字符串的日期进行排序):

# dealing with dates as strings
grouped.index = pd.to_datetime(grouped.index, format='%d_%b')
grouped = grouped.sort_index()
grouped.index = grouped.index.strftime('%d_%b')
plt.annotate('Peak',
             (grouped.index[9], grouped['L'][9]),
             xytext=(15, 15), 
             textcoords='offset points',
             arrowprops=dict(arrowstyle='-|>'))
grouped.plot()

grouped.index[9]返回u'10_May'grouped['L'][9]返回10.0。 我知道pandas期望index是float,但我认为我可以通过df.index []访问它。非常感谢您的建议。

1 个答案:

答案 0 :(得分:2)

对我来说,首先是作图,然后按Index.get_loc获得索引位置:

var if = document.getElementById('#myiframe').contentWindow.document.documentElement.outerHTML;

样品:

ax = df.plot()
ax.annotate('Peak',
             (df.index.get_loc(df.index[9]), df['L'][9]),
             xytext=(15, 15), 
             textcoords='offset points',
             arrowprops=dict(arrowstyle='-|>'))

graph

编辑:

get_loc + idxmax + max的更一般解决方案:

np.random.seed(10)
df = pd.DataFrame({'L':[3,5,0,1]}, index=['4_May','3_May','1_May', '2_May'])
#print (df)
df.index = pd.to_datetime(df.index, format='%d_%b')
df = df.sort_index()
df.index = df.index.strftime('%d_%b')
df.plot()
plt.annotate('Peak',
             (df.index.get_loc(df.index[2]), df['L'][2]),
             xytext=(15, 15), 
             textcoords='offset points',
             arrowprops=dict(arrowstyle='-|>'))