Ich habe ein 2 Datenframe, in der ersten Spalte, wo ich einige Informationen finden sollte zweite Spalte, was ich im ersten Datenblock und Spalten finden sollte, was ich hinzufügen sollte, wenn Zeichenfolge von der ersten Spalte enthalten.Pandas: Teilzeichenfolge in Zeichenfolge in einigen Spalten
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
Wenn url Spalte Spiel wäre, würde ich
df1['Main Category'] = df1.url.map(df2.set_index('url')['Maincategory'])
verwenden, aber es funktioniert nicht String zu finden. Ich benutze für diese
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'
Aber wenn df zu viel ist, dauert es zu viel Zeit. Wie kann ich diesen Ansatz verbessern, um es schneller zu machen?
Wenn Sie mit dem Domain-Namen übereinstimmen, könnte es sinnvoll sein, eine Spalte zu Ihrem Dataframe mit 'urlparse' hinzuzufügen. Sie können genau auf dem 'netloc' abgleichen. Natürlich funktioniert dies nicht für beliebige Teilstrings, aber es könnte in Ihrem Fall funktionieren. Referenz: https://docs.python.org/2/library/urlparse.html – Mikk
@Mikk nicht immer Domäne –