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

Pandas中Drop函数删除索引过多问题排查求助

问题原因及解决办法

核心问题

  1. 日期类型不匹配:原main_df的UPDATED列大概率是字符串或带时间戳的datetime类型,而新设置的date_是纯date类型,混合类型下的相等判断会出错,导致新添加的7126条ELLICOM数据被误判为不符合条件而删除。
  2. 原数据存在旧ELLICOM条目:原main_df中本身包含MANUFACTURER为ELLICOM的行,这些行的更新日期不是当前日期,会被删除;若再叠加日期类型不匹配的问题,新数据也会被误删,最终只剩原main_df中的非ELLICOM行。

解决方案

方案1:统一日期类型后执行删除

先将所有UPDATED列转换为一致的date类型,再进行判断:

# 转换原main_df的UPDATED列为date类型
main_df['UPDATED'] = pd.to_datetime(main_df['UPDATED']).dt.date

date_ = pd.Timestamp('now').date()
ellicom_df['UPDATED'] = date_
ellicom_df['MANUFACTURER'] = 'ELLICOM'

# 合并数据
main_df = pd.concat([main_df, ellicom_df], sort=False)

# 过滤目标行(用布尔索引更直观)
main_df = main_df[~((main_df['MANUFACTURER'] == 'ELLICOM') & (main_df['UPDATED'] != date_))]
print(main_df.shape)
方案2:直接替换旧ELLICOM数据(更高效)

如果目标是用新的ELLICOM数据完全替换旧数据,直接先删除原main_df中的ELLICOM行,再合并新数据,彻底避开日期判断问题:

# 删除原main_df中所有ELLICOM条目
main_df = main_df[main_df['MANUFACTURER'] != 'ELLICOM']

date_ = pd.Timestamp('now').date()
ellicom_df['UPDATED'] = date_
ellicom_df['MANUFACTURER'] = 'ELLICOM'

# 合并新数据
main_df = pd.concat([main_df, ellicom_df], sort=False)
print(main_df.shape)  # 结果为:原main_df非ELLICOM行数 + 7126

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:55:23