检查pandas字符列是否在字符串列中

1 投票
3 回答
75 浏览
提问于 2025-04-13 18:07

我想逐行检查一个字符列中的值是否出现在一个字符串列中。

举个例子,在

df = pd.DataFrame({
    'char': ['A', 'B', 'A', 'C', 'D'], 
    'str': ['WCCC', 'BFC', 'GFA', 'E', <NA>]
})

我想看看'char'列的值是否在'str'列中。

我期望的结果是 [False, True, True, False, False]

我正在处理一个很大的数据集。

3 个回答

0
def check(char,strng):
    # check if strng or chr not null
    if not strng or not char:
           return False
    if chr in strng:
           return True
    return False

ans = df.apply(lambda x: check(x['char'],x['str']), axis=1)

这段代码可以处理所有情况。

0

因为这是一个很大的数据集,所以最好把这些信息存放在一个新的列里。

增加了对缺失值的检查和一个else条件。

import pandas as pd
df['char_in_str'] = df.apply(lambda c: c['char'] in c['str'] if
pd.notna(c['char'])
and pd.notna(c['str']) 
else False, axis=1)
3

你可以使用zip和列表推导式,同时检查数据类型来处理NaN值,方法如下:

[c in s if isinstance(c, str) & isinstance(s, str) else False for c, s in zip(df['char'], df['str'])]

输出结果:

[False, True, True, False, False]

撰写回答