首页 > 解决方案 > 无需迭代即可评估 DataFrame datetime.datetime 对象

问题描述

正如我在这里看到的,如果您希望您的代码具有可扩展性,那么迭代 DataFrame 并不有趣......

因此,我正在导入一个带有“日期”列的 .xlsx 电子表格,pandas 会自动将其识别为 datetime.datetime 格式。

以下是代码示例:

import pandas as pd
import datetime

df = pd.read_excel('Sheet.xlsx')

df['Date'][0].month == 1

Output:
True

如果我尝试df['Date'].month它会给AttributeError: 'Series' object has no attribute 'month'

df['Date']输入返回一个包含所有 datetime.datetime 对象的系列。

所以我的问题是如何在测试月份获得一个包含所有布尔值的系列,而不必一个接一个地迭代所有行?

我也考虑过这些方法来选择具有给定值的行,但老实说,我坚持这一点,因为我正在过滤对象。

也可能是错误的,但我相信如果我只需要迭代月份数而不是每一行会更有效......

标签: python-3.xpandasdataframedatetimefilter

解决方案


Series.dt.month如果需要从列中提取属性,请使用.dt

df['Date'] = pd.to_datetime(df['Date'], errors='coerce')

mask = df['Date'].dt.month == 1

Series.eq比较:

mask = df['Date'].dt.month.eq(1)

推荐阅读