我有一个带有 c 的 pandas DF。 10 年来的 16 万个日期观测值,并希望删除自闰年 2 月 29 日以来的所有观测值,以便能够在所有年份中进行一致的逐日比较。
带有时间戳的 df 列(使用 pd.to_datetime 创建)是“日期”。
我使用以下内容创建月份和日期列
df['月份'] = temp_data.日期.dt.月份
df['day'] = temp_data.Date.dt.day
以及以下内容为 2 月 29 日日期创建 bool 掩码:
df['leapday'] = df.apply(lambda x: True if x['month'] == 2 and x['day'] == 29
否则为假,轴 = 1)
并且可以轻松过滤这个 bool 掩码上的 df 。但在 160k 观察的 df 上,这很慢,我怀疑有一种更有效的方法来做到这一点。
有什么建议吗?
最佳答案
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
关于python - 从时间序列中删除特定日期(2 月 29 日)的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46350368/