You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除按日期分组的DataFrame中指定日期的所有数据

问题原因

你调用.drop()报错的核心原因是df_HR.groupby(['date'])返回的DataFrameGroupBy是分组逻辑对象,不是存储实际数据的DataFrame结构,本身没有实现drop方法,不能直接在分组对象上执行删除行操作。

实现方案

方案1:分组前过滤源数据(推荐,性能最优)

不需要先生成分组对象再删数据,最简便高效的方式是先把指定日期的数据从原表中过滤掉,再执行分组逻辑:

# 单日期删除示例:剔除2022-05-24的所有数据
df_HR = df_HR[df_HR['date'] != '2022-05-24']

# 多日期删除示例:删除2022-05-24、2022-05-26两天的数据
# df_HR = df_HR[~df_HR['date'].isin(['2022-05-24', '2022-05-26'])]

# 过滤完成后再分组,得到的分组对象就不包含已删除的日期数据
gk = df_HR.groupby(['date'])

方案2:分组后遍历排除指定分组

如果已经基于分组对象做了部分计算,不想重新执行前置逻辑,可以遍历所有分组,跳过需要删除的日期分组,把剩余分组重新拼接为新的DataFrame:

import pandas as pd

# 配置需要删除的日期集合
drop_date_set = {'2022-05-24'}
keep_group_list = []

# 遍历分组,保留非目标删除日期的分组
for date_key, group_data in gk:
    if date_key not in drop_date_set:
        keep_group_list.append(group_data)

# 拼接得到过滤后的完整数据表
df_HR_filtered = pd.concat(keep_group_list)
# 需要新分组对象的话重新执行groupby即可
gk_new = df_HR_filtered.groupby(['date'])
注意事项

如果你的date字段是带时分秒的datetime类型,直接和'2022-05-24'字符串做等值判断会匹配失败,需要先把字段转为纯日期格式再做过滤:

# 先把date字段转为datetime类型,提取纯日期部分
df_HR['date'] = pd.to_datetime(df_HR['date']).dt.date
# 再执行过滤逻辑
df_HR = df_HR[df_HR['date'] != pd.to_datetime('2022-05-24').date()]

内容的提问来源于stack exchange,提问作者moos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:18:24