从 pandas Dataframe 中提取月份数据
Posted
技术标签:
【中文标题】从 pandas Dataframe 中提取月份数据【英文标题】:Extract month data from pandas Dataframe 【发布时间】:2019-04-25 01:14:43 【问题描述】:我最初有字符串格式的日期。 我想从这些日期中提取月份作为数字。
df = pd.DataFrame('Date':['2011/11/2', '2011/12/20', '2011/8/16'])
我将它们转换为 pandas 日期时间对象。
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'
【问题讨论】:
【参考方案1】:df.loc[0]["Date"]
返回一个标量:pd.Timestamp
对象有一个 month
属性,这是您正在访问的。
df.loc[1:2]["Date"]
返回一个系列:pd.Series
对象确实不具有month
属性,如果df['Date']
是,它们确实具有dt.month
属性datetime
系列。
另外,don't use chained indexing。您可以使用:
df.loc[0, 'Date'].month
用于标量
df.loc[1:2, 'Date'].dt.month
一个系列
【讨论】:
【参考方案2】:有不同的功能。 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
【讨论】:
以上是关于从 pandas Dataframe 中提取月份数据的主要内容,如果未能解决你的问题,请参考以下文章
从 pandas DataFrame 中的列中提取 JSON 数据
如何从 Adwords API 中提取数据并放入 Pandas Dataframe