有部分读数有错误的数据,我想删除至少有一个的整个天。我已经创建了包含True和False的列,如果该段是错误的。
下面的数据框示例,因为它有超过100k行
power_c power_g temperature to_delete
date_time
2019-01-01 00:00:00+00:00 2985 0 10.1 False
2019-01-01 00:05:00+00:00 2258 0 10.1 True
2019-01-01 01:00:00+00:00 2266 0 10.1 False
2019-01-02 00:15:00+00:00 3016 0 10.0 False
2019-01-03 01:20:00+00:00 2265 0 10.0 True
例如,第一行和第二行属于同一天的同一小时,其中一个值为True,因此我想删除当天的所有行。
数据总是以5分钟的差异存在,所以我试图在True之后删除288项,但由于错误不在小时开始时,它确实按预期工作。
我对编程很陌生,到处尝试了很多不同的答案,我将非常感谢任何帮助。
按日期分组,然后过滤出至少有一个to_delete
的组。
(df
.groupby(df.index.date)
.apply(lambda sf: None if sf['to_delete'].any() else sf)
.reset_index(level=0, drop=True))
power_c power_g temperature to_delete
date_time
2019-01-02 00:15:00+00:00 3016 0 10.0 False
我假设date_time
是日期时间类型。如果没有,先转换:
df.index = pd.to_datetime(df.index)