python – 格式化pandas y轴以显示时间而不是总秒数

python – 格式化pandas y轴以显示时间而不是总秒数,第1张

概述我在数据框中有测量.列是不同的对象. Index是datetime64索引.现在,对于每个日期,我对每列的总秒数(int)进行了测量. 一切都很好,我唯一的问题,而不是在y轴上显示6000秒我想显示1:40表示1小时40分钟. 我怎么能真正实现这个目标? day Object1 Object22017-01-01 6000 1234 我想要 day 我在数据框中有测量.列是不同的对象. Index是datetime64索引.现在,对于每个日期,我对每列的总秒数(int)进行了测量.

一切都很好,我唯一的问题,而不是在y轴上显示6000秒我想显示1:40表示1小时40分钟.

我怎么能真正实现这个目标?

day         Object1  Object22017-01-01     6000     1234

我想要

day         Object1  Object22017-01-01  1:40:00  00:20:34

你能否告诉我如何做到这一点

解决方法 这是可能的,但本机不支持 ploting timedelta.

df['Object1'] = pd.to_timedelta(df['Object1'],unit='s')df['Object2'] = pd.to_timedelta(df['Object2'],unit='s')

要么:

cols = ['Object1','Object2']df[cols] = df[cols].apply(lambda x: pd.to_timedelta(x,unit='s'))
print (df)          day  Object1  Object20  2017-01-01 01:40:00 00:20:34

但FuncFormatter是可能的:

df = pd.DataFrame({'Object1': [6000,4000,3000],'Object2':[3000,5000,2110]})import matplotlib.ticker as tkrimport datetimedef func(x,pos):    return str(datetime.timedelta(seconds=x))fmt = tkr.FuncFormatter(func)ax = df.plot(x='Object1',y='Object2',rot=90)ax.xaxis.set_major_formatter(fmt)ax.yaxis.set_major_formatter(fmt)

总结

以上是内存溢出为你收集整理的python – 格式化pandas y轴以显示时间而不是总秒数全部内容,希望文章能够帮你解决python – 格式化pandas y轴以显示时间而不是总秒数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1192028.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存