Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从时间序列中删除特定日期(2月29日)的最有效方法_Python_Pandas_Datetime - Fatal编程技术网

Python 从时间序列中删除特定日期(2月29日)的最有效方法

Python 从时间序列中删除特定日期(2月29日)的最有效方法,python,pandas,datetime,Python,Pandas,Datetime,我和c有一段感情。160k记录了10年的观测数据,并希望删除闰年2月29日的所有观测数据,以便能够在所有年份进行一致的逐日比较 使用pd.to_datetime创建的带有时间戳的df列为“Dates” 我使用了以下方法来创建月和日列 df['month']=temp_data.Date.dt.month df['day']=temp_data.Date.dt.day 以及以下步骤,为2月29日的日期创建布尔掩码: df['leapday']=df.applylambda x:如果x['mo

我和c有一段感情。160k记录了10年的观测数据,并希望删除闰年2月29日的所有观测数据,以便能够在所有年份进行一致的逐日比较

使用pd.to_datetime创建的带有时间戳的df列为“Dates”

我使用了以下方法来创建月和日列

df['month']=temp_data.Date.dt.month df['day']=temp_data.Date.dt.day

以及以下步骤,为2月29日的日期创建布尔掩码:

df['leapday']=df.applylambda x:如果x['month']==2和x['day']==29,则为True 否则为假,轴=1

并且可以很容易地在这个布尔掩码上过滤df。但在160k的测向观测中,这是一个缓慢的过程,我怀疑有一种更有效的方法可以做到这一点

有什么建议吗

df['leapday'] = temp_data['Date'].dt.month.eq(2) & temp_data['Date'].dt.day.eq(29)
要在2月29日放弃:

temp_data = temp_data.loc[~(temp_data['Date'].dt.month.eq(2) & temp_data['Date'].dt.day.eq(29))] 
还有一个属性可用于检查闰年:

要在2月29日放弃:

temp_data = temp_data.loc[~(temp_data['Date'].dt.month.eq(2) & temp_data['Date'].dt.day.eq(29))] 
还有一个属性可用于检查闰年:


@MaxU工作完美,速度非常快,谢谢。我试过这个面具,但是用“==2”代替了“.eq2”,这不起作用。“==”和“.eq”之间的重要区别是什么?mask=df.is\u leap\u year==1&df.dayofyear==60@Zero非常感谢。我猜将其转换为字符串,然后比较字符串会更慢…@chrisrb10,正如Zero已经提到的,您应该将比较放在括号中,因为Python的运算符优先级…@ScottBoston,非常有趣的方法!请把它作为答案贴出来。它可能比我的更快。。。我可以这样说:mask=df.is\u leap\u year&df.dayofyear。eq60@MaxU非常好用,非常快,谢谢。我试过这个面具,但是用“==2”代替了“.eq2”,这不起作用。“==”和“.eq”之间的重要区别是什么?mask=df.is\u leap\u year==1&df.dayofyear==60@Zero非常感谢。我猜将其转换为字符串,然后比较字符串会更慢…@chrisrb10,正如Zero已经提到的,您应该将比较放在括号中,因为Python的运算符优先级…@ScottBoston,非常有趣的方法!请把它作为答案贴出来。它可能比我的更快。。。我这样对它:mask=df.is\u leap\u year&df.dayofyear.eq60