【发布时间】:2018-02-25 21:33:52
【问题描述】:
为什么.astype('timedelta64[D]')在下面的例子中无法转换ndarray?
df = pd.DataFrame(pd.date_range('2017-01-01', periods=5, freq='W'), columns=['Val'])
df['Base'] = pd.datetime(2015, 1, 1)
df['Days'] = (df['Val'] - df['Base']).astype('timedelta64[D]') # Success
df['FailCast'] = (df['Val'].values - df['Base'].values).astype('timedelta64[D]') # Failure
print (df)
Val Base Days FailCast
0 2017-01-01 2015-01-01 731.0 731 days
1 2017-01-08 2015-01-01 738.0 738 days
2 2017-01-15 2015-01-01 745.0 745 days
3 2017-01-22 2015-01-01 752.0 752 days
4 2017-01-29 2015-01-01 759.0 759 days
特别是考虑到它会在事后作为单独的操作应用时成功转换值:例如,
df['FailCast'] = df['FailCast'].astype('timedelta64[D]') # Success!
【问题讨论】:
标签: python pandas numpy casting timedelta