Python Pandas:检查sam中一列的字符串是否包含在另一列的字符串中

2024-05-16 22:37:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的数据框:

RecID| A  |B
----------------
1    |a   | abc 
2    |b   | cba 
3    |c   | bca
4    |d   | bac 
5    |e   | abc 

并希望从A和B中创建另一列C,以便对于同一行,如果A列中的字符串包含在B列的字符串中,则C=True,如果不包含,则C=False。

我正在寻找的输出示例如下:

RecID| A  |B    |C 
--------------------
1    |a   | abc |True
2    |b   | cba |True
3    |c   | bca |True
4    |d   | bac |False
5    |e   | abc |False

有没有一种方法可以在熊猫身上快速而不使用循环来实现这一点?谢谢


Tags: 数据方法字符串falsetrue示例abcbac
2条回答

我在第一栏没有得到任何回答。对列表的理解稍有改动就可以处理:

[x[0] in x[1] if x[0] is not None else False for x in zip(df['A'], df['B'])]

你需要applyin

df['C'] = df.apply(lambda x: x.A in x.B, axis=1)
print (df)
   RecID  A    B      C
0      1  a  abc   True
1      2  b  cba   True
2      3  c  bca   True
3      4  d  bac  False
4      5  e  abc  False

使用list comprehension的另一种解决方案更快,但必须没有NaNs:

df['C'] = [x[0] in x[1] for x in zip(df['A'], df['B'])]
print (df)
   RecID  A    B      C
0      1  a  abc   True
1      2  b  cba   True
2      3  c  bca   True
3      4  d  bac  False
4      5  e  abc  False

相关问题 更多 >