检查pandas字符列是否在字符串列中
我想逐行检查一个字符列中的值是否出现在一个字符串列中。
举个例子,在
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]