pandas:将dataframe中的列中的子字符串与另一个dataframe中的列进行匹配



我有两个像下面这样的数据框,但是有更多的行:

data = {'First':  [['First', 'value'],['second','value'],['third','value','is'],['fourth','value','is']],
'Second': [['adj','noun'],['adj','noun'],['adj','noun','verb'],['adj','noun','verb']]}
df = pd.DataFrame (data, columns = ['First','Second'])
data2 = {'example':  ['First value is important', 'second value is imprtant too','it us goof to know']}
df2 = pd.DataFrame (data2, columns = ['example'])

我编写了一个函数,检查示例列中的第一个单词是否可以在第一个数据帧的第一个列中找到,如果为真则返回字符串,如下所示:

def reader():
for l in [l for l in df2.example]:
if df["first"].str.contains(pat=l.split(' ', 1)[0]).any() is True:
return l

然而,我意识到它不会工作,因为df中的第一列是字符串列表,所以我做了以下修改:

def reader():
for l in [l for l in df2.example]:
df['first_unlist'] = [','.join(map(str, l)) for l in df.First]
if df["first_unlist"].str.contains(pat=l.split(' ', 1)[0]).any() is True:
return l

然而,当我运行函数时,我仍然得到'None',我无法找出这里出了什么问题。

更新:

我希望函数返回示例列中的前两个字符串,'第一个值很重要','第二个值也很重要'

当无法找到示例列中的第一个单词时,函数不返回False

def reader():
for l in [l for l in df2.example]:
df['first_unlist'] = [','.join(map(str, l)) for l in df.First]

if df["first_unlist"].str.contains(pat=l.split(' ', 1)[0]).any() is True:
return l
return list(df2.example[:2])
reader()

相关内容

最新更新