python - 熊猫列的字符串替换
问题描述
我有一个数据框,例如:
col1
OK.1:177788-1000(+):Genus_species
OK.1:177788-2000(+):Genus_species
OK.1:177788-3000(+):Genus_species
OK.1:177788-3000(+):Genus_species
我想得到:
OK.1_177788-1000_+__Genus_species
OK.1_177788-2000_+__Genus_species
OK.1_177788-3000_+__Genus_species
OK.1_177788-3000_+__Genus_species
instread 但我真的不知道如何在 re.sub 一行中做到这一点,例如我尝试过:
df['col1'].replace(to_replace="\(", value=r"_", regex=True)
df['col1'].replace(to_replace="\)", value=r"_", regex=True)
df['col1'].replace(to_replace="\:", value=r"_", regex=True)
但我正在寻找更智能的东西。
谢谢您的帮助。
解决方案
假设您的数据框都是字符串, str.replace 应该可以做到不需要正则表达式。
df = df.col1.str.replace('(+):', '_+__', regex=False)
您regex = False
在此处设置以表明您正在寻找这些字符串文字而不是其正则表达式。
例子
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1': ['OK.1:177788-1000(+):Genus_species', 'OK.1:177788-2000(+):Genus_species']})
输出:
col1
0 OK.1:177788-1000(+):Genus_species
1 OK.1:177788-2000(+):Genus_species
然后使用
df = df.col1.str.replace('(+):', '_+__', regex=False)
输出:
col1
0 OK.1:177788-1000_+__Genus_species
1 OK.1:177788-2000_+__Genus_species
推荐阅读
- automated-tests - 使用范围报告设置 Klov
- clojure - Why doesn't clojure core library support an index-of function?
- php - Foreach 组合成数组
- java - 使用java优化从数据库下载数据
- vba - Excel VBA - 在语句中添加粗体文本
- android - 从标记 google maps-android studio 获取所有信息
- c# - 将 MyEnum.MyValue.ToString() 自动重构为 nameof(MyEnum.MyValue)
- java - 即使在应用程序关闭后如何保存已在回收器视图中选择的那些项目的状态
- bash - 使用 jq 导出带空格的环境变量
- python - 下标不适用于字符串格式化迷你语言