Python 3.x 无需迭代即可计算DataFrame datetime.datetime对象

Python 3.x 无需迭代即可计算DataFrame datetime.datetime对象,python-3.x,pandas,dataframe,datetime,filter,Python 3.x,Pandas,Dataframe,Datetime,Filter,正如我所看到的,如果您希望代码具有可伸缩性,那么迭代数据帧并不有趣 因此,我正在导入一个带有“日期”列的.xlsx电子表格,pandas会自动将其识别为datetime.datetime格式 下面是一个代码示例: 将熊猫作为pd导入 导入日期时间 df=pd.read\u excel('Sheet.xlsx') df['Date'][0]。月份==1 输出: 真的 如果我尝试df['Date'].month它会给出AttributeError:'Series'对象没有属性'month' 而df

正如我所看到的,如果您希望代码具有可伸缩性,那么迭代数据帧并不有趣

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

下面是一个代码示例:

将熊猫作为pd导入
导入日期时间
df=pd.read\u excel('Sheet.xlsx')
df['Date'][0]。月份==1
输出:
真的
如果我尝试
df['Date'].month
它会给出
AttributeError:'Series'对象没有属性'month'

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

所以我的问题是,我怎样才能得到一个测试月份所有布尔值的序列,而不必逐个迭代所有行

我也考虑过选择具有给定值的行,但老实说,我一直坚持这样做,因为我正在过滤对象

也可能是错误的,但我相信如果我只需要对月数进行迭代,而不是按每行进行迭代,效率会更高。

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

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

mask = df['Date'].dt.month == 1
或用于比较:

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

嘿,成功了!!好。。。不能立即使用,因为它得到了
AttributeError:只能将.dt访问器与datetimelike值一起使用
error。但在使用.dt访问器之前,我只需要
df['Data']=pd.to_datetime(df['Data'],errors='concurve')
,一切正常。谢谢大家!@Azgrom-很有趣,如果从excel读取日期时间,大多数情况下无需转换;)