熊猫:使用str.contains和map查找一些子字符串并替换列中的值

彼得·彼得罗夫(Petr Petrov)

我有数据框

member_id,device_type,device_id,event_type,event_path,event_duration
603609,url,mail.ru/,0,pc,7d4a095373874b4fb26a2e6d070b6ad3
603609,url,mail.ru/,0,pc,7d4a095373874b4fb26a2e6d070b6ad3
603609,url,mail.ru/,0,pc,7d4a095373874b4fb26a2e6d070b6ad3
603609,url,mail.ru/,3,pc,7d4a095373874b4fb26a2e6d070b6ad3
603609,url,mail.ru/community.livejournal.com/psp_ru,28,pc,7d4a095373874b4fb26a2e6d070b6ad3
603609,url,lady.mail.ru/article/491411-kurban-omarov-otvetil-na-obvinenija-ksenii-borodinoj/?from=mr_news,0,pc,7d4a095373874b4fb26a2e6d070b6ad3
603609,url,mail.ru/,0,pc,7d4a095373874b4fb26a2e6d070b6ad3
603609,url,lady.mail.ru/article/491411-kurban-omarov-otvetil-na-obvinenija-ksenii-borodinoj/?from=mr_news,0,pc,7d4a095373874b4fb26a2e6d070b6ad3
603609,url,lady.mail.ru/article/491411-kurban-omarov-otvetil-na-obvinenija-ksenii-borodinoj/?from=mr_news,0,pc,7d4a095373874b4fb26a2e6d070b6ad3

我应该从另一个文件中找到子字符串,如果它包含pattrn,请category从df2创建一列

url category    category2
falloutsite.ru/ Рубрики/Hi-Tech/Программы/Софт/Игры/    Рубрики/Hi-Tech/Программы/Софт/Игры/ 
kmzpub.ru/games.asp Рубрики/Hi-Tech/Программы/Софт/Игры/Универсальное/  Рубрики/Hi-Tech/Программы/Софт/Игры/Универсальное/ 
sigma-team.ru/content/view/15/19    Рубрики/Hi-Tech/Программы/Софт/Игры/Quake и Counter-Strike/     Рубрики/Hi-Tech/Программы/Софт/Игры/Quake и Counter-Strike/ 
community.livejournal.com/psp_ru    Рубрики/Развлечения/Игры/Приставочные игры/     Рубрики/Развлечения/Игры/Приставочные игры/ 

我用

df = df1[df1['device_id'].str.contains('|'.join(find_urls))]

查找子字符串,但是我该如何替换它。我通常使用map,但是在这种情况下,字符串应该是通用的

耶斯列尔

一种可能的解决方案:

#create dict for map
d = df2.set_index('url')['category'].to_dict()
print (d)
{'community.livejournal.com/psp_ru': 'Рубрики/Развлечения/Игры/Приставочныеигры/',
 'kmzpub.ru/games.asp': 'Рубрики/Hi-Tech/Программы/Софт/Игры/Универсальное/Рубрики/Hi-Tech/Программы/Софт/Игры/Универсальное/', 
 'falloutsite.ru/': 'Рубрики/Hi-Tech/Программы/Софт/Игры/', 
 'sigma-team.ru/content/view/15/19': 'Рубрики/Hi-Tech/Программы/Софт/Игры/QuakeиCounter-Strike/'}

#use list comprehension for map by substring   
print (df1.device_id.apply(lambda x: pd.Series([v for k,v in d.items() if k in x])) )
                                            0
0                                         NaN
1                                         NaN
2                                         NaN
3                                         NaN
4  Рубрики/Развлечения/Игры/Приставочныеигры/
5                                         NaN
6                                         NaN
7                                         NaN
8                                         NaN

df1['category']=df1.device_id.apply(lambda x: pd.Series([v for k,v in d.items() if k in x])) 
print (df1)
   member_id device_type                                          device_id  \
0     603609         url                                           mail.ru/   
1     603609         url                                           mail.ru/   
2     603609         url                                           mail.ru/   
3     603609         url                                           mail.ru/   
4     603609         url           mail.ru/community.livejournal.com/psp_ru   
5     603609         url  lady.mail.ru/article/491411-kurban-omarov-otve...   
6     603609         url                                           mail.ru/   
7     603609         url  lady.mail.ru/article/491411-kurban-omarov-otve...   
8     603609         url  lady.mail.ru/article/491411-kurban-omarov-otve...   

   event_type event_path                    event_duration  \
0           0         pc  7d4a095373874b4fb26a2e6d070b6ad3   
1           0         pc  7d4a095373874b4fb26a2e6d070b6ad3   
2           0         pc  7d4a095373874b4fb26a2e6d070b6ad3   
3           3         pc  7d4a095373874b4fb26a2e6d070b6ad3   
4          28         pc  7d4a095373874b4fb26a2e6d070b6ad3   
5           0         pc  7d4a095373874b4fb26a2e6d070b6ad3   
6           0         pc  7d4a095373874b4fb26a2e6d070b6ad3   
7           0         pc  7d4a095373874b4fb26a2e6d070b6ad3   
8           0         pc  7d4a095373874b4fb26a2e6d070b6ad3   

                                     category  
0                                         NaN  
1                                         NaN  
2                                         NaN  
3                                         NaN  
4  Рубрики/Развлечения/Игры/Приставочныеигры/  
5                                         NaN  
6                                         NaN  
7                                         NaN  
8                                         NaN  

通过评论编辑:

似乎没有字典匹配,您可以通过示例对其进行测试:

df1 = pd.DataFrame({'device_id':['a d','b s','c r'], 'b':[1,2,3]})    
df2 = pd.DataFrame({'url':['a','m','k'], 'category':['one','two','three']})    
#df2 = pd.DataFrame({'url':['a r','m','k'], 'category':['one','two','three']})    


d = df2.set_index('url')['category'].to_dict()
print (d)
{'k': 'three', 'a': 'one', 'm': 'two'}

df1['category']=df1.device_id.apply(lambda x: pd.Series([v for k,v in d.items() if k in x])) 
print (df1)
   b device_id category
0  1       a d      one
1  2       b s      NaN
2  3       c r      NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用序列中的字符串检查大熊猫中的str.contains

来自分类Dev

熊猫错误“只能将.str访问器与字符串值一起使用”

来自分类Dev

查找一些字符串并使用notepad ++正则表达式替换另一个字符串

来自分类Dev

需要使用 R 脚本从列中删除一些特定的字符串

来自分类Dev

遍历熊猫数据框,并用数字替换一些字符串

来自分类Dev

Python-熊猫-根据其他列的值替换列中的字符串-处理子字符串

来自分类Dev

使用str.find()查找部分字符串,然后替换字典中的值

来自分类Dev

使用 Findstr 批量查找一些非 ASCII 字符的字符串

来自分类Dev

去除?和 使用替换在熊猫数据框列中的字符串中的符号

来自分类Dev

如何使用数据框和熊猫检查列中的字符串是否是另一列中的子字符串

来自分类Dev

熊猫:替换字符串中的子字符串

来自分类Dev

熊猫:替换字符串中的值

来自分类Dev

如何使用json Ajax将文件和一些输入字符串发送到Codebehind中的webmethod?

来自分类Dev

替换熊猫列中的字符串

来自分类Dev

我想使用memset从字符串中删除一些字符

来自分类Dev

我想使用memset从字符串中删除一些字符

来自分类Dev

(PHP)如何使用值数组替换字符串中的不同子字符串?

来自分类Dev

如何使用其他两列(熊猫)中的数据替换一列中的字符串

来自分类Dev

使用php从数据中获取一些字符串?

来自分类Dev

使用sed我只想在行中打印一些字符串

来自分类Dev

使用startswith和index从结构化字符串中查找子字符串

来自分类Dev

熊猫:如何用另一个值替换int子字符串

来自分类Dev

如何用熊猫列中的另一个字符串替换子字符串

来自分类Dev

熊猫使用与其他一些熊猫列对应的先验值填充NaN

来自分类Dev

使用一些预定义的值将行插入 SQL 表,一些来自另一个表以及连接字符串。

来自分类Dev

在C#中使用正则表达式查找和替换子字符串

来自分类Dev

熊猫使用正则表达式提取列中的str

来自分类Dev

如何使用查找和替换用vscode中的kebab字符串替换所有驼峰式字符串

来自分类Dev

如何在熊猫数据框中使用带有多个表达式的str.contains()?

Related 相关文章

  1. 1

    使用序列中的字符串检查大熊猫中的str.contains

  2. 2

    熊猫错误“只能将.str访问器与字符串值一起使用”

  3. 3

    查找一些字符串并使用notepad ++正则表达式替换另一个字符串

  4. 4

    需要使用 R 脚本从列中删除一些特定的字符串

  5. 5

    遍历熊猫数据框,并用数字替换一些字符串

  6. 6

    Python-熊猫-根据其他列的值替换列中的字符串-处理子字符串

  7. 7

    使用str.find()查找部分字符串,然后替换字典中的值

  8. 8

    使用 Findstr 批量查找一些非 ASCII 字符的字符串

  9. 9

    去除?和 使用替换在熊猫数据框列中的字符串中的符号

  10. 10

    如何使用数据框和熊猫检查列中的字符串是否是另一列中的子字符串

  11. 11

    熊猫:替换字符串中的子字符串

  12. 12

    熊猫:替换字符串中的值

  13. 13

    如何使用json Ajax将文件和一些输入字符串发送到Codebehind中的webmethod?

  14. 14

    替换熊猫列中的字符串

  15. 15

    我想使用memset从字符串中删除一些字符

  16. 16

    我想使用memset从字符串中删除一些字符

  17. 17

    (PHP)如何使用值数组替换字符串中的不同子字符串?

  18. 18

    如何使用其他两列(熊猫)中的数据替换一列中的字符串

  19. 19

    使用php从数据中获取一些字符串?

  20. 20

    使用sed我只想在行中打印一些字符串

  21. 21

    使用startswith和index从结构化字符串中查找子字符串

  22. 22

    熊猫:如何用另一个值替换int子字符串

  23. 23

    如何用熊猫列中的另一个字符串替换子字符串

  24. 24

    熊猫使用与其他一些熊猫列对应的先验值填充NaN

  25. 25

    使用一些预定义的值将行插入 SQL 表,一些来自另一个表以及连接字符串。

  26. 26

    在C#中使用正则表达式查找和替换子字符串

  27. 27

    熊猫使用正则表达式提取列中的str

  28. 28

    如何使用查找和替换用vscode中的kebab字符串替换所有驼峰式字符串

  29. 29

    如何在熊猫数据框中使用带有多个表达式的str.contains()?

热门标签

归档