【发布时间】:2014-09-28 13:07:05
【问题描述】:
我有一个数据框 df,其中包含以下列:
df['ArrivalDate'] =
...
936 2012-12-31
938 2012-12-29
965 2012-12-31
966 2012-12-31
967 2012-12-31
968 2012-12-31
969 2012-12-31
970 2012-12-29
971 2012-12-31
972 2012-12-29
973 2012-12-29
...
列的元素是pandas.tslib.Timestamp。
我只想包括年份和月份。我以为会有简单的方法来做到这一点,但我想不通。
这是我尝试过的:
df['ArrivalDate'].resample('M', how = 'mean')
我收到以下错误:
Only valid with DatetimeIndex or PeriodIndex
然后我尝试了:
df['ArrivalDate'].apply(lambda(x):x[:-2])
我收到以下错误:
'Timestamp' object has no attribute '__getitem__'
有什么建议吗?
编辑:我有点想通了。
df.index = df['ArrivalDate']
然后,我可以使用索引重新采样另一列。
但我仍然想要一种重新配置整个列的方法。有什么想法吗?
【问题讨论】:
-
最好的答案显然是.. df['mnth_yr'] = df.date_column.dt.to_period('M') 来自@jaknap32
-
你甚至不必做
to_period:df.date_column.dt.month(或.year,或.day)的工作 -
@elphz:
.dt.month虽然输了一年。.dt.to_period('M')将数据类型更改为不再是 datetime64 的东西。我最终使用Juan's answer 建议.astype('datetime64[M]')截断值。 -
您能更改最佳答案吗?