I encountered the same problem when calculating timedelta in a dataframe. It even ended with an error when I tried to call the days attribute. I am using Numpy 1.6.1
AttributeError: 'Series' object has no attribute 'days'
Problem
df_trans['DELTA'] = df_trans['DATE2'] - df_trans['DATE1']
print df_trans['DELTA'].dtype
timedelta64[ns]
print df_trans['DELTA']
0 8 days, 00:00:00
1 15 days, 00:00:00
2 5 days, 00:00:00
df_trans['DELTA'] = df_trans['DELTA'].astype('timedelta64[D]')
print df_trans['DELTA'].dtype
print df_trans['DELTA'].dtype
Name: DELTA, dtype: timedelta64[D]
print df_trans['DELTA']
0 8 days, 00:00:00
1 15 days, 00:00:00
2 5 days, 00:00:00
Nothing changed at all
print df_trans['DELTA'].days
AttributeError: 'Series' object has no attribute 'days'
I get rid of the problem by putting it in to a list for the conversion.
Ss_timedelta = df_trans['DATE2'] - df_trans['DATE1']
ls_timedelta = Ss_timedelta.values.astype('timedelta64[D]').tolist()
for i in range(0, len(ls_timedelta)):
ls_timedelta[i] = ls_timedelta[i].days / 1000
df_trans['HOLDDAYS'] = pd.Series(ls_timedelta)
Full discussion at GitHub
https://github.com/pydata/xarray/issues/1143
No comments:
Post a Comment