timedelta64[ns] -> FutureWarning:不推荐传递 timedelta64-dtype 数据,将在未来版本中引发 TypeError
Posted
技术标签:
【中文标题】timedelta64[ns] -> FutureWarning:不推荐传递 timedelta64-dtype 数据,将在未来版本中引发 TypeError【英文标题】:timedelta64[ns] -> FutureWarning: Passing timedelta64-dtype data is deprecated, will raise a TypeError in a future version 【发布时间】:2019-11-15 09:40:33 【问题描述】:假设df['time']
来自timedelta64[ns]
和df['a']
类型以及df['b']
来自float64
类型,这两个系列可以这样绘制:
import pandas as pd
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, sharex=True)
time_values = pd.to_datetime(df['time'])
axs[0].plot(time_values, df['a'])
axs[1].plot(time_values, df['b'])
plt.show()
这可行..但给出以下警告:
FutureWarning: Passing timedelta64-dtype data is deprecated, will raise a TypeError in a future version
那么应该使用什么来代替pd.to_datetime
来将timedelta64[ns]
显示为matplotlib
中的人类可读时间?
【问题讨论】:
pd.to_timedelta
?
@QuangHoang import pandas as pd
【参考方案1】:
我在使用 pandas 从 SQL 读取时间数据时遇到了同样的问题。这两行解决了我的问题。我试图找到另一个直接的解决方案,但没有成功。
time_values = df['time'].apply(lambda x: np.nan if pd.isnull(x) else str(x)[-8:])
time_values = pd.to_datetime(time_values, format='%H:%M:%S').dt.time
【讨论】:
以上是关于timedelta64[ns] -> FutureWarning:不推荐传递 timedelta64-dtype 数据,将在未来版本中引发 TypeError的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: cannot astype a timedelta from [timedelta64[ns]] to [int32]
在 Python Pandas DataFrame 中将 timedelta64[ns] 列转换为秒