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

标签 python pandas datetime

我有一个带有 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/

相关文章:

python - 使用 Python pandas Dataframe 进行嵌套连接

python - 使用屏幕管理器更新 kivy 标签

python - 如何找到似乎没有在任何地方定义的 python 模块?

java - Java 中的 Pickle 模块

python - 基于每个组在 pandas 列中填充值的高效而优雅的方法

php - 将到期时间插入数据库并在另一页上倒计时

python - Pandas Dataframes.to_csv 截断长值

printing - python pandas 打印数据框的元素

php - 是否有 PHP 函数来测试零日期

java - 使用 java 将字符串插入到日期时间 mysql 列中。