我有两个数据帧:df
ID url
111 vk.com/audio/12353546
222 twitter.com/lenad
333 avito.ru/phones
333 facebook.ru/chats
还有另一个df2
domain Maincategory Subcategory
vk.com Entertainment Social Network
twitter.com Entertainment Social Network
facebook.com Entertainment Social Network
avito.com Online shop Buys
vk.com/audio Entertainment Social Network Music
我需要做以下工作:
如果df2.domain.values.tolist()
中的某个字符串出现在df.url
中,请添加df2
(Maincategory
和Subcategory
)中的df
列并获得:
ID url Maincategory Subcategory
111 vk.com/audio/12353546 Entertainment Social Network Music
222 twitter.com/lenad Entertainment Social Network
333 avito.ru/phones Online shop Buys
333 facebook.ru/chats Entertainment Social Network
我有办法做,但时间太长了。你知道吗
mapping = dict(df2.set_index('domain')['Maincategory'])
def map_to_substring(x):
for key in mapping.keys():
if key in x:
return mapping[key]
return 'None'
df['Maincategory'] = df.url.apply(lambda x: map_to_substring(x))
mapping1 = dict(df2.set_index('domain')['Subcategory'])
def map_to_substring1(x):
for key in mapping1.keys():
if key in x:
return mapping1[key]
return 'None'
df['Subcategory'] = df.url.apply(lambda x: map_to_substring1(x))
我该如何改进?你知道吗
我的理解是你想从df得到id并把它放在df2上?你知道吗
有很多方法可以做到这一点。您可以合并df:
但是,如果“url”上有重复的值,则可能会导致问题
您还可以映射
希望有帮助,和平
结果:
相关问题 更多 >
编程相关推荐