日期系列是这样的:
df.d_num_active.head()
# result
0 191 days
1 49 days
2 273 days
3 287 days
4 634 days
Name: d_num_active, dtype: timedelta64[ns]
问题:
df.d_num_active.head().astype('timedelta64[D]')
返回ValueError: Cannot convert from timedelta64[ns] to timedelta64[D]. Supported resolutions are 's', 'ms', 'us', 'ns'
问题是:
一方面,根据这个answer和这个answer似乎应该没问题。
另一方面
dt.days
作品:
df.d_num_active.head().dt.days
# result
0 191
1 49
2 273
3 287
4 634
我错过了什么吗?提前谢谢!
pandas 不支持。
如果需要转换为
timedelta64[D]
,使用numpy数组:
df['d_num_active'].to_numpy().astype('timedelta64[D]')
# array([191, 49, 273, 287, 634], dtype='timedelta64[D]')
如果您尝试转换回系列,这将强制支持一种类型:
pd.Series(df['d_num_active'].to_numpy().astype('timedelta64[D]'))
0 191 days 00:00:00
1 49 days 00:00:00
2 273 days 00:00:00
3 287 days 00:00:00
4 634 days 00:00:00
dtype: timedelta64[s]
pd.to_timedelta(df['d_num_active'].dt.days, unit='D')
0 191 days
1 49 days
2 273 days
3 287 days
4 634 days
Name: d_num_active, dtype: timedelta64[ns]