在datafram中搜索匹配的子字符串

2024-09-28 19:08:38 发布

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

我尝试将df用作查找表,并尝试确定我的字符串是否包含该df中的值。简单的例子

str = 'John Smith Business Analyst'
df = pd.read_pickle('job_titles.pickle')

df将是一个有几个职位的专栏

df=会计师、律师、首席财务官、业务分析师等

现在,我们可以确定str有一个子字符串:businessanalyst,因为这个值包含在我的df中

返回结果将是substring='businessanalyst'

如果原始str是:

str='约翰史密斯公司'

然后返回值将为空,因为没有子字符串与df中的字符串匹配

只要一个字我就可以用了。例如:

df = pd.read_pickle('cities.pickle')
df = Calgary, Edmonton, Toronto, etc


str = 'John Smith Business Analyst Calgary AB Canada'
str_list = str.split()

for word in str_list:
    df_location = df[df['name'].str.match(word)]
    if not df_location.empty: 
        break

df_location = Calgary

城市将在df中找到,并返回那一行。只是不知道怎么当它是一个多字


Tags: 字符串dfreadlocationbusinessjohnpicklelist
1条回答
网友
1楼 · 发布于 2024-09-28 19:08:38

我不确定您到底想对返回值做什么,但这里至少有一种方法可以识别它。首先,我制作了一个玩具数据框:

import pandas as pd

titles_df = pd.DataFrame({'title' : ['Business Analyst', 'Data Scientist', 'Plumber', 'Baker', 'Accountant', 'CEO']})

search_name = 'John Smith Business Analyst'

titles_df

              title
0  Business Analyst
1    Data Scientist
2           Plumber
3             Baker
4        Accountant
5               CEO

然后,我循环遍历title列中的值,看看它们是否在搜索项中:

for val in titles_df['title'].values:
    if val in search_name:
        print(val)

如果要对dataframe列中的所有名称执行此操作,并为新列指定标题,可以执行以下操作:

首先,我用一些名称创建一个数据帧:

names_df = pd.DataFrame({'name' : ['John Smith Business Analyst', 'Dorothy Roberts CEO', 'Jim Miller Dancer', 'Samuel Adams Accountant']})

然后,我循环遍历names的值和title的值,并将匹配的title分配给names数据框中的title列(不匹配的将有一个空字符串):

names_df['title'] = ''
for name in names_df['name'].values: 
    for title in titles_df['title'].values:
        if title in name:
            names_df['title'][names_df['name'] == name] = title

names_df
                          name             title
0  John Smith Business Analyst  Business Analyst
1          Dorothy Roberts CEO               CEO
2            Jim Miller Dancer                  
3      Samuel Adams Accountant        Accountant

相关问题 更多 >