从 Pandas Datetime 列中分别提取月份和年份

新手上路,请多包涵

我有一个数据框 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']

然后,我可以使用索引对另一列重新采样。

但我仍然想要一种重新配置整个列的方法。有任何想法吗?

原文由 monkeybiz7 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 338
2 个回答

如果你想要新的列分别显示年份和月份,你可以这样做:

 df['year'] = pd.DatetimeIndex(df['ArrivalDate']).year
df['month'] = pd.DatetimeIndex(df['ArrivalDate']).month

要么…

 df['year'] = df['ArrivalDate'].dt.year
df['month'] = df['ArrivalDate'].dt.month

然后您可以组合它们或按原样使用它们。

原文由 KieranPC 发布,翻译遵循 CC BY-SA 3.0 许可协议

df['date_column'] 必须采用日期时间格式。

 df['month_year'] = df['date_column'].dt.to_period('M')

您还可以使用 D 一天, 2M 2 个月等不同的采样间隔,如果有时间序列数据带有时间戳,我们可以使用粒度采样间隔例如 45Min 45 分钟, 15Min 15 分钟采样等。

原文由 pka32 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题