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

时间:2017-09-21 17:57:00

标签: python pandas datetime

我有一只带有c的熊猫DF。在10年内进行了160k的日期观察,并希望从闰年2月29日开始删除所有这些,以便在所有年份进行一致的日常比较。

带有时间戳的df列(使用pd.to_datetime创建)是'日期'。

我已使用以下内容创建月和日列

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

以及以下内容为2月29日日期创建一个布尔掩码:

df['leapday'] = df.apply(lambda x: True if x['month'] == 2 and x['day'] == 29 else False, axis = 1)

并且可以轻松过滤此布尔掩码上的df。但是在160k的观测值上这很慢,我怀疑有一种更有效的方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

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))] 

还有一个属性可以检查跳跃

DateTimeSeries.dt.is_leap_year