[英]Remove everything after multiple symbols within a column in pandas
I have a dataframe such as我有一个数据框,例如
COL1 COL2
A Name=canis_lupus3099 HHYUIO jj6§è7
B Name=bomba009 JJIJJ;HHJKN
C Name=Test_test788_eheh;NHHhh
D Name=UYEYEHJ0909EEHH:HEEH Jk G
How can I use regex in order to only keep within COL2 the Name=something part and remove everything after a space of any symbolic point (eg ; or :)我如何使用正则表达式以便仅将 Name=something 部分保留在 COL2 中,并在任何符号点的空格之后删除所有内容(例如 ; 或 :)
I should then get:然后我应该得到:
COL1 COL2
A Name=canis_lupus3099
B Name=bomba009
C Name=Test_test788_eheh
D Name=UYEYEHJ0909EEHH
I touth to use something like tab['COL2'].str.replace()
我倾向于使用tab['COL2'].str.replace()
You can use str.extract
:您可以使用str.extract
:
df['COL2'] = df['COL2'].str.extract(r'^(Name=(?:[^\s;:])+)')
Alternative:选择:
# everything until the first space or ; or :
df['COL2'] = df['COL2'].str.extract(r'^(.*?)(?=[\s;:])')
output:输出:
COL1 COL2
0 A Name=canis_lupus3099
1 B Name=bomba009
2 C Name=Test_test788_eheh
3 D Name=UYEYEHJ0909EEHH
Try split:尝试拆分:
df[['COL2','COL3']] = df['COL2'].str.split(" ", 1, expand=True)
after that you can delete COL3之后你可以删除 COL3
def remove(df, col, symbol):
df[col] = df[col].str.replace(symbol, '')
return df
You can use str.extract
with \w+
:您可以将str.extract
与\w+
一起使用:
^
- start of string ^
- 字符串的开头\w+
- More that one letters/digits/underscores \w+
- 多于一个字母/数字/下划线>>> df['COL2'].str.extract(r'^(Name=\w+)')
1 Name=canis_lupus3099
2 Name=bomba009
3 Name=Test_test788_eheh
4 Name=UYEYEHJ0909EEHH
一个出路是使用正向查找来提取开始后的所有字符。
df['COL2'].str.strip().str.extract('((?<=^)Name=\w+)')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.