python - 从 Pandas 日期时间列中分别提取月份和年份

标签 python 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']

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

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

最佳答案

如果您希望新列分别显示年份和月份,您可以这样做:

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

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

关于python - 从 Pandas 日期时间列中分别提取月份和年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25146121/

相关文章:

python - 在不平衡样本场景中为每个类提取相同数量的样本

python - 使用 for 循环的二进制搜索,在列表中搜索单词并进行比较

python - Pandas - 根据行值有条件地为新列选择数据源列

mysql - 如何限制 SELECT 时的时间(MYSQL)

python - 使用多索引重新索引并创建空日期

python - 在外部范围中定义的阴影名称有什么问题?

python - 如何在 python 中查找二维列表的邻居?

python - 如果元素不包含在列表中,则从 pandas 列中删除元素

python - Pandas 按唯一计数分组作为新列

javascript - D3 DateTime 解析器考虑时区