从 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 填充 datetimespandas.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 中提取月份数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从 DataFrame 的日期列中提取月份名称和年份

如何从 Pandas DataFrame 中提取 URL?

从 pandas DataFrame 中的列中提取 JSON 数据

如何从 Adwords API 中提取数据并放入 Pandas Dataframe

从 pandas DataFrame 中的文本中提取子字符串作为新列

如何从 Python Pandas Dataframe 中的 STRING 列中提取嵌套字典?