从熊猫数据框中提取月份数据

时间:2018-11-22 11:02:35

标签: python python-3.x pandas datetime timestamp

我本来有字符串格式的日期。 我想从这些日期中将月份提取为数字。

df = pd.DataFrame({'Date':['2011/11/2', '2011/12/20', '2011/8/16']})

我将它们转换为熊猫的datetime对象。

df['Date'] = pd.to_datetime(df['Date'])

然后我想提取所有月份。

当我尝试:

df.loc[0]["Date"].month

这可以返回正确的值11。

但是当我尝试拨打多个月时,它不起作用吗?

df.loc[1:2]["Date"].month

AttributeError: 'Series' object has no attribute 'month'

2 个答案:

答案 0 :(得分:4)

有不同的功能。 pandas.Series.dt.month用于转换由Series填充的datetimes,而pandas.Timestamp用于转换标量。为了将Index转换为函数pandas.DatetimeIndex.month,没有.dt

所以需要:

#Series
df.loc[1:2, "Date"].dt.month

#scalar
df.loc[0, 'Date'].month

#DatetimeIndex
df.set_index('Date').month

答案 1 :(得分:4)

df.loc[0]["Date"]返回标量:pd.Timestamp对象具有month属性,这就是您要访问的属性。

df.loc[1:2]["Date"]返回一个序列:pd.Series对象具有month属性,它们 do 具有{{3 }}属性,如果df['Date']datetime系列。

此外,dt.month。您可以使用:

df.loc[0, 'Date'].month表示标量

df.loc[1:2, 'Date'].dt.month for a series