【发布时间】:2020-08-13 17:41:45
【问题描述】:
我在下面有 2 个数据框。我的目标是检查列 df['A'] 的值是否在第二个数据帧 df2['B'] 或 df2['C'] 的多个列中,如果存在该值,则返回 true 或 false。 test 列是我的输出列。
df
A test
q True
w False
e True
df2
B C
q r
g r
g e
下面我当前的代码可以工作,但是处理成百上千行的代码非常慢。在下面的这种情况下,我使用list 方法将 df2 的 2 列转换为列表并检查字符串是否在这些列表中。但是我需要比这更快的东西。
listb = df2['B'].to_list()
listc = df2['C'].to_list()
df['test'] = df['A'].apply(lambda x: 'True' if x in (listb or listc) else 'False')
我一直在尝试使用 .isin() 方法,但似乎无法让它与多个列一起使用以在单独的数据集中搜索多个列。但是,此代码运行返回所有不正确的 False。
df['test'] = df['A'].isin(df2[['B','C']]).any(axis = 1)
【问题讨论】:
标签: python pandas list numpy dataframe