首页 > 解决方案 > Pandas - 如何验证系列值 1 是否在系列值 2 中(在行级别)

问题描述

简单地说,我想弄清楚系列 1 中的字符串是否在同一个 DataFrame 和同一行的系列 2 中。从那里我将使用 True/False 值来过滤 DataFrame。我试过了: df['column1'].isin(df['column2'])

这部分有效,但它不仅仅查看同一行。它正在查看整个系列并带回误报。下面的代码实现了我试图做的我只是想知道是否有更有效的代码?

# Create empty list    
del_filt = []

# Use loop to create a list of True/False values
for i in range(len(df)):
    del_filt.append(df.loc[i, 'Column1'] in df.loc[i, 'Column2'])

标签: pythonpandas

解决方案


逐行比较与我们拥有的向量化方法有点不同。

我们可以在这里使用列表推导zip

del_filt = [col1 in col2 for col1, col2 in zip(df['Column1'], df['Column2'])

或者我们可以使用DataFrame.apply

del_filt = df.apply(lambda x: x['Column1'] in x['Column2'], axis=1)

推荐阅读