我本来有字符串格式的日期。 我想从这些日期中将月份提取为数字。
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'
答案 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