一个本地的Pandas
来自Timedelta文档:
“Timedelta Series、TimedeltaIndex和Timedelta标量可以通过除以另一个时间增量或通过astyping转换为其他‘频率’。”
确实,我可以通过用另一个时间增量除以它来转换:
文档中的示例实际上并没有使用
Timedelta()
(版本为0.20.3
)无法使用astype()
转换为特定频率,尽管文档中说应该是可能的。我正在努力弄清楚我漏掉了什么。来自Timedelta文档:
“Timedelta Series、TimedeltaIndex和Timedelta标量可以通过除以另一个时间增量或通过astyping转换为其他‘频率’。”
确实,我可以通过用另一个时间增量除以它来转换:
import pandas as pd
pd.__version__
# 0.20.3
day = pd.Timedelta("1 day")
day / pd.Timedelta(1, "h")
# 24.0
但是astype()
失败了:
day.astype('timedelta64[h]')
# AttributeError: 'Timedelta' object has no attribute 'astype'
文档中的示例实际上并没有使用
pd.Timedelta()
,这似乎是问题的一部分。相反,它使用了 Series(date_range)
减法和 datetime.timedelta
(鉴于有原生的 Pandas Timedelta()
,这似乎有点奇怪)。# This example is used in the Timedelta docs.
import datetime
td = pd.Series(pd.date_range('20130101', periods=4)) - pd.Series(pd.date_range('20121201', periods=4))
td[2] += datetime.timedelta(minutes=5, seconds=3)
td[3] = np.nan
td
0 31 days 00:00:00
1 31 days 00:00:00
2 31 days 00:05:03
3 NaT
dtype: timedelta64[ns]
# ...
td.astype('timedelta64[s]')
Out[75]:
0 2678400.0
1 2678400.0
2 2678703.0
3 NaN
dtype: float64
然而,来自我的示例中的day
的类型是不同的:
type(day)
# <class 'pandas._libs.tslib.Timedelta'>
我还没有深入研究tslib
的源代码,以弄清楚它在内部是如何运作的。希望有人能够澄清文档中所述和我在这里尝试做的事情之间似乎存在的差异。谢谢!
AttributeError: 'Timedelta'对象没有'astype'属性
。 - Climbs_lika_Spyder