2017-01-19 44 views
0

我有一个2数据框,在第一列中,我应该找到一些信息 第二列,我应该在第一个数据框和列中找到什么,如果字符串从第一列包含。熊猫:在某些列中找到字符串中的子字符串

DF1:

id url 
111 vk.com/audio 
222 twitter.com/chats 

DF2:

url Maincategory Subcategory 
vk.com Social Network entertainment 
twitter.com Social Network entertainment 

如果URL栏是比赛,我会用

df1['Main Category'] = df1.url.map(df2.set_index('url')['Maincategory']) 

但它不工作找子。 我使用该

mapping = dict(df2.set_index('url')['Maincategory']) 
def map_to_substring(x): 
    for key in mapping.keys(): 
     if key in x: 
      return mapping[key] 
    return 'None' 

但如果DF实在是太多了,它需要太多的时间。 我该如何改进这种方法来更快地做到这一点?

+0

如果您与域名匹配,可能值得使用'urlparse'将数据列添加到您的数据框。你可以在'netloc'上做精确匹配。当然,这对任意的子串都不起作用,但它可能适用于你的情况。参考:https://docs.python.org/2/library/urlparse.html – Mikk

+0

@Mikk并不总是域 –

回答

0

,目前还不清楚你问什么,但你应该使用熊猫str.contains方法http://pandas.pydata.org/pandas-docs/stable/text.html

作为一般规则,你可以遍历在第一数据帧的每一列,并在第二个搜索匹配。没有比我认为的更快的解决方案

相关问题