2017-01-19 40 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

作爲一般規則,你可以遍歷在第一數據幀的每一列,並在第二個搜索匹配。沒有比我認爲的更快的解決方案

相關問題