[英]Regex replace first two letters within column in python
我有一個數據框,例如
COL1
A_element_1_+_none
C_BLOCA_element
D_element_3
element_'
BasaA_bloc
B_basA_bloc
BbasA_bloc
我想刪除COL1
每一行中的前2 letters
, COL1
是它們在該列表中:
the_list =['A_','B_','C_','D_']
然后我應該得到以下輸出:
COL1
element_1_+_none
BLOCA_element
element_3
element_'
BasaA_bloc
basA_bloc
BbasA_bloc
到目前為止,我嘗試了以下操作:
df['COL1']=df['COL1'].str.replace("A_","")
df['COL1']=df['COL1'].str.replace("B_","")
df['COL1']=df['COL1'].str.replace("C_","")
df['COL1']=df['COL1'].str.replace("D_","")
但它也刪除了諸如 row2 A_
的模式,並且不只刪除前 2 個字母......
如果要在the_list
替換的值始終具有該格式,您還可以考慮使用 str.replace 和一個簡單的模式匹配大寫字符 AD 后跟字符串開頭的下划線^[AD]_
import pandas as pd
strings = [
"A_element_1_+_none ",
"C_BLOCA_element ",
"D_element_3",
"element_'",
"BasaA_bloc",
"B_basA_bloc",
"BbasA_bloc"
]
df = pd.DataFrame(strings, columns=["COL1"])
df['COL1'] = df['COL1'].str.replace(r"^[A-D]_", "")
print(df)
輸出
COL1
0 element_1_+_none
1 BLOCA_element
2 element_3
3 element_'
4 BasaA_bloc
5 basA_bloc
6 BbasA_bloc
您還可以使用 pandas 的apply()
函數。 因此,如果字符串具有相關模式,我們省略前兩個字符,否則返回整個字符串。
d["COL1"] = d["COL1"].apply(lambda x: x[2:] if x.startswith(("A_","B_","C_","D_")) else x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.