检查列值是否在另一列(其值为列表)中

ser*_*nte 3 python-3.x pandas

我在数据框中有两列。第一个在每一行中包含一个字符串。第二个包含每一行的一组字符串。我如何使用熊猫函数检查每一行的第一列中的值是否在第二列中以及它的效率?

pd.DataFrame([np.random.randint(5,size = 12),np.random.randint(5,size =(12,5))])。T

在此处输入图片说明

如何检查第1列列表中第0列的值

ank*_*_91 8

具有列表理解和zip(IMO会比更快apply):

df=df.assign(Check=[a in b for a,b in zip(df[0],df[1])])
Run Code Online (Sandbox Code Playgroud)
    0                1  Check
0   4  [4, 4, 2, 3, 0]   True
1   4  [1, 0, 2, 1, 4]   True
2   0  [2, 1, 1, 2, 2]  False
3   0  [0, 3, 3, 2, 3]   True
4   4  [3, 0, 0, 3, 1]  False
5   1  [0, 2, 0, 3, 4]  False
6   0  [4, 3, 4, 1, 1]  False
7   1  [2, 0, 0, 3, 1]   True
8   2  [3, 3, 3, 2, 4]   True
9   2  [3, 0, 0, 4, 1]  False
10  0  [3, 3, 3, 4, 3]  False
11  1  [0, 3, 3, 2, 1]   True
Run Code Online (Sandbox Code Playgroud)

对测试数据的性能

在此处输入图片说明


Ank*_*nha 2

IIUC,例如:

   Col1       Col2
0     0  [0, 1, 2]
1     1  [2, 3, 4]
2     2  [4, 5, 2]
Run Code Online (Sandbox Code Playgroud)

你可以做:

df['Result'] = df.apply(lambda x: x.Col1 in x.Col2, axis = 1)
Run Code Online (Sandbox Code Playgroud)

输出:

   Col1       Col2  Result
0     0  [0, 1, 2]    True
1     1  [2, 3, 4]   False
2     2  [4, 5, 2]    True
Run Code Online (Sandbox Code Playgroud)