python date2num_使用date2num()将时间(无日期)转换为Matplotlib num

在尝试使用matplotlib.dates.date2num()函数将包含时间的数据转换为绘制图表的数值时,遇到了错误。问题在于'duration'列包含的是时间字符串而非日期,导致date2num()函数无法处理。为了在Matplotlib中以'datetime'为x轴,'duration'为y轴绘图,需要先将'duration'转换为适当的数值形式。解决方案可能涉及将时间字符串转换为浮点数表示的时间间隔(如小时数),然后进行绘图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个这样的数据帧数据框:

NOOIs.pngdatetime duration

0 2018-10-08 13:30:00 03:00

1 2018-10-08 16:40:00 00:11

2 2018-10-08 21:30:00 03:19

3 2018-10-09 03:21:00 04:27

4 2018-10-09 07:49:00 02:11

两列的两种类型都是pandas.core.系列.as系列:

^{pr2}$

我想用下面的方法来转换数据:import matplotlib.dates as dates

dates.date2num(df_sleep['datetime'])

dates.date2num(df_sleep['duration'])

“datetime”列正常工作时,“duration”列显示以下错误:---------------------------------------------------------------------------

AttributeError Traceback (most recent call last)

in ()

----> 1 dates.date2num(df_sleep['duration'])

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/dates.py in date2num(d)

450 if not d.size:

451 return d

--> 452 return _to_ordinalf_np_vectorized(d)

453

454

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/lib/function_base.py in __call__(self, *args, **kwargs)

2753 vargs.extend([kwargs[_n] for _n in names])

2754

-> 2755 return self._vectorize_call(func=func, args=vargs)

2756

2757 def _get_ufunc_and_otypes(self, func, args):

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/lib/function_base.py in _vectorize_call(self, func, args)

2823 res = func()

2824 else:

-> 2825 ufunc, otypes = self._get_ufunc_and_otypes(func=func, args=args)

2826

2827 # Convert args to object arrays first

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/lib/function_base.py in _get_ufunc_and_otypes(self, func, args)

2783

2784 inputs = [arg.flat[0] for arg in args]

-> 2785 outputs = func(*inputs)

2786

2787 # Performance note: profiling indicates that -- for simple

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/dates.py in _to_ordinalf(dt)

253 tzi = UTC

254

--> 255 base = float(dt.toordinal())

256

257 # If it's sufficiently datetime-like, it will have a `date()` method

AttributeError: 'str' object has no attribute 'toordinal'

有人知道吗?我的最终目标是用Matplotlib在“datetime”(x轴)—“duration”(y轴)中绘制数据,我想是因为df['duration']列只包含时间而不包含日期,不能进行转换?我该怎么做这个计划?在

非常感谢你的建议!在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值