在Pandas中使用isin函数在多个列中搜索

wkyowqbh  于 2023-06-04  发布在  其他
关注(0)|答案(1)|浏览(150)

我想搜索,如果我的日期在一个dataframe中存在于另一个dataframe的多个列之一,因为这里有多个日期列。
当我想在一个列中搜索时,我这样做:

df = df.assign(InDatum=df.Datum.isin(KBlatt.erdat).astype(int))

这就给予了我正确的解决方案,但只有一列。
我想在比“erdat”多两列中搜索值“Datum”。
我试着用一个或来实现它,但没有成功:

df = df[(df.assign(InDatum=df.Datum.isin(KBlatt.erdat).astype(int))) | (df.assign(InDatum=df.Datum.isin(KBlatt.erldat).astype(int))) | (df.assign(InDatum=df.Datum.isin(KBlatt.aendat).astype(int)))]
gwo2fgha

gwo2fgha1#

只需选择目标列并展平:

df.assign(InDatum=df.Datum.isin(KBlatt[['erdat', 'erldat', 'aendat']].stack()).astype(int))

或者有几个条件:

df.assign(InDatum=(df.Datum.isin(KBlatt['erdat'])
                  |df.Datum.isin(KBlatt['erldat'])
                  |df.Datum.isin(KBlatt['aendat'])
                  ).astype(int)
          )

相关问题