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

如何使用Pandas的isin函数在多列中查找日期是否存在

解决方法

你可以通过两种简洁的方式实现需求:

方法一:合并目标日期列后匹配

先将KBlatt中的三个日期列合并成一个统一的Series(去重避免重复判断),再用isin匹配:

import pandas as pd

# 合并三列日期并去重
all_target_dates = pd.concat([KBlatt['erdat'], KBlatt['erldat'], KBlatt['aendat']]).drop_duplicates()
# 生成InDatum列,存在则为1,否则为0
df = df.assign(InDatum=df['Datum'].isin(all_target_dates).astype(int))

方法二:多列分别判断后逻辑合并

直接对每一列的匹配结果做逻辑或操作,再转为整数:

# 逐列判断后用|组合布尔条件,最后转int
df['InDatum'] = (
    df['Datum'].isin(KBlatt['erdat']) |
    df['Datum'].isin(KBlatt['erldat']) |
    df['Datum'].isin(KBlatt['aendat'])
).astype(int)

原代码问题说明

你之前的错误在于:df.assign(...)会返回添加了新列的完整DataFrame,直接对这些DataFrame做|运算会进行元素级的逻辑判断,而不是针对每行的匹配结果做或操作。正确的做法是提取每行的布尔判断结果(即df['Datum'].isin(...)返回的Series)再做逻辑组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:13:16