基于列值删除DataFrame重复行时出现语法错误求助
解决DataFrame删除重复日期行的问题
你的代码存在两个关键问题:
- pandas的
drop是方法,必须用圆括号()调用,你写成了方括号[],这是触发语法错误的直接原因 - 筛选重复行的逻辑有误,
df_daily[0].drop_duplicates(keep=False)返回的是去重后的日期序列,不能直接用来做布尔索引筛选DataFrame
以下是两种可行的写法,均可实现删除所有日期重复的行,仅保留日期唯一的行:
方法一:直接筛选非重复行
# 保留日期列(df_daily[0])中只出现一次的行 dp_check = df_daily[~df_daily[0].duplicated(keep=False)]
这里duplicated(keep=False)会给所有重复的行标记True(不管是第一次还是后续出现的),用~取反就能筛选出仅出现一次的行。
方法二:用drop删除重复行
# 先获取所有重复日期行的索引 dup_rows_index = df_daily[df_daily[0].duplicated(keep=False)].index # 删除这些索引对应的行,得到仅保留非重复行的新DataFrame dp_check = df_daily.drop(dup_rows_index)
另外注意:你的原代码同时用了dp_check = ...和inplace=True,这会导致dp_check变成None(因为inplace=True时drop方法不会返回新对象)。如果要保留原DataFrame不变,就不要用inplace=True,直接接收返回的新对象即可。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

