python - 用另一个字符串替换多行
问题描述
我有一个示例数据框
id food_item
1 Apple
2 Beet root
3 Pizza
5 Red velvet
我需要用“快餐”apple
替换fruit
,Beetroot
和。vegetable
pizza
df['food_item'] = df['food_item'].str.replace('apple','fruit')
df['food_item'] = df['food_item'].str.replace('beetroot','vegetable')
df['food_item'] = df['food_item'].str.replace('pizza','fast food')
df['food_item'] = df['food_item'].str.replace('red velvet','dessert')
blue velvet
但是有没有更简化/替代的方法,而不是使用正则表达式为此编写四行,所以dessert
尽管它当前没有添加到 df.
解决方案
你当然可以!您应该查看pandas replace而不是 python 的内置:
df['food_item'] = df['food_item'].replace({'apple':'fruit','beetroot':'vegetable','pizza':'fast food','red velvet':'dessert'})
此外,如果应将多个字符串替换为一个公共字符串,您可以尝试:
df['food_item'] = df['food_item'].replace(['apple','banana','orange','grapes'],'fruit')
鉴于您进行编辑,您可以创建一个替换字典以将其传递给 pandas 的替换。该函数的一件有用的事情是,如果找不到该值,它将只是简单地跳过它并且不会产生错误。因此,您可以将蓝色天鹅绒添加到您的字典或替换中而不会产生任何后果,这样当蓝色天鹅绒是数据的一部分时,它会被替换,否则会被跳过
推荐阅读
- java - 如何更改仅在应用启动时首次启动的 Android 应用活动
- stream - 在 C# 中删除 WebKitFormBoundary
- javascript - 使用对象`Date()`,如何比较小时数?
- c++ - char的澄清&
- vim - 用于 Ultisnips+Deoplete 兼容性的 vimscript
- flutter - 在 Flutter 中将音频文件编码为 base64
- javascript - 未捕获的类型错误:无法读取 null 的属性“addEventListener”。上下文 _generated_background_page.html
- php - 需要在一个函数中使用多个变量
- jupyter-notebook - 在 jupyter + pycharm 集成中更改布局以在单元格之后显示预览
- python-3.x - “列表”列上的 Python Pandas groupby 数据