Python 当日期属于特定月份时,筛选日期列

Python 当日期属于特定月份时,筛选日期列,python,pandas,datetime,Python,Pandas,Datetime,如何过滤df数据帧,使其仅包含4月和5月的数据?为什么我在语句中的最后一个失败?我想过滤四月和五月的数据,并将其复制到另一个数据帧中 df = pd.DataFrame({'year': [2015, 2016], 'month': [4, 3], 'day': [4, 5]}) x=pd.to_datetime(df) 4 in (4,5) x.dt.month in (4,5) #y=x.dt.mon

如何过滤df数据帧,使其仅包含4月和5月的数据?为什么我在语句中的最后一个
失败?我想过滤四月和五月的数据,并将其复制到另一个数据帧中

df = pd.DataFrame({'year': [2015, 2016],
                       'month': [4, 3],
                       'day': [4, 5]})
x=pd.to_datetime(df)
4 in (4,5)
x.dt.month in (4,5)
#y=x.dt.month in (4,5)

中的
检查左操作数是否是右操作数的成员,
x.dt.month
是熊猫系列,而不是
(4,5)
的成员;您需要矢量化的
isin
方法:

x.dt.month.isin((4,5))
#0    False
#1    False
#dtype: bool

中的
检查左操作数是否是右操作数的成员,
x.dt.month
是熊猫系列,而不是
(4,5)
的成员;您需要矢量化的
isin
方法:

x.dt.month.isin((4,5))
#0    False
#1    False
#dtype: bool

1秒之前,+1。值得一提的是,这是一个使用
set
@jpp的好机会。你能分享一下如何使用
set
vals={4,5};mask=pd.to_datetime(df).dt.month.isin(vals)
@Psidom,我想问一下,pd.Series.isin实际上是如何矢量化的。。将
set
numpy
数组相结合通常意味着它不是(但请纠正我)。@jpp这是个好问题,但实际上,如果您查看
isin
,在使用
np.in1d
之前,值总是转换为数组,这将进一步使用
np.argsort
和向量化比较来计算结果。对于数字类型,我认为它在某种程度上是矢量化的。1秒之前,+1。值得一提的是,这是一个使用
set
@jpp的好机会。你能分享一下如何使用
set
vals={4,5};mask=pd.to_datetime(df).dt.month.isin(vals)
@Psidom,我想问一下,pd.Series.isin实际上是如何矢量化的。。将
set
numpy
数组相结合通常意味着它不是(但请纠正我)。@jpp这是个好问题,但实际上,如果您查看
isin
,在使用
np.in1d
之前,值总是转换为数组,这将进一步使用
np.argsort
和向量化比较来计算结果。所以对于数字类型,我认为它在某种程度上是矢量化的。