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

如何在Pandas中删除不满足年末日期条件的数据行?

解决Pandas筛选年末行的报错问题

错误原因

你使用df['date'] not in list时,是将整个Series与列表做比较,Pandas无法确定整个Series的布尔值,因此抛出ValueError: The truth value of a Series is ambiguous错误。

解决方案

方法一:使用isin()方法匹配目标日期

用Series的isin()方法生成布尔索引,判断每个元素是否在目标列表中,再进行筛选:

# 定义目标年末日期列表
target_dates = [199912,200012,200112,200212,200312,200412,200512,200612,200712,200812,200912,201012,201112,201212,201312,201412,201512,201612,201712,201812,201912,202012,202112,202212]

# 直接筛选保留符合条件的行(推荐,比drop更高效)
df2 = df[df['date'].isin(target_dates)]

# 或者用drop方式删除不符合的行
df2 = df.drop(df[~df['date'].isin(target_dates)].index)

方法二:通过日期规则自动匹配年末行(更灵活)

不需要手动生成目标列表,直接判断日期的最后两位是否为12:

  • 如果date是数值类型:
df2 = df[df['date'] % 100 == 12]
  • 如果date是字符串类型:
df2 = df[df['date'].str.endswith('12')]

这个方法无需维护固定的日期列表,自动适配所有年末行,适用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:49:59