我有一只带有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的观测值上这很慢,我怀疑有一种更有效的方法。
有什么建议吗?
答案 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