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

如何从Pandas DataFrame中排除闭店日期行并解决isin报错?

解决方法:排除DataFrame中属于闭店日期的行

嘿,这个错误的原因很明确——你不小心把整个Series包装进了列表里传给isin(),而Series是可变对象,没办法被哈希,所以触发了TypeError。咱们来修正这个问题:

方法1:直接传入闭店日期的Series

isin()函数本身就支持接收pandas Series作为参数,所以你只需要去掉外面的方括号就行:

df = df.loc[~df['Day'].isin(closeddays['Closed'])]

方法2:转换为列表后传入

如果你更习惯用列表操作,也可以把闭店日期的Series转成普通列表,这样更直观,也能彻底避免哈希问题:

# 先提取闭店日期为列表
closed_dates = closeddays['Closed'].tolist()
# 筛选非闭店日期的行
df = df.loc[~df['Day'].isin(closed_dates)]

为什么原来的代码会报错?

你写的[closeddays['Closed']]是把整个Series放到了一个列表里,变成了一个包含单个Series元素的列表。isin()会尝试检查df['Day']中的每个日期是否存在于这个列表中,但Series是可变的(你可以随时修改它的值),而哈希操作要求对象是不可变的,所以就抛出了那个错误。

另外要确认一下:你的Day列和Closed列都是pd.to_datetime处理后的datetime64类型,这样日期匹配才不会有问题——看起来你已经做到这一点了,所以上面的代码应该能直接生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:44:12