我有一個資料框,例如
COL1
A_element_1_ _none
C_BLOCA_element
D_element_3
element_'
BasaA_bloc
B_basA_bloc
BbasA_bloc
并且我想洗掉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 個字母......
uj5u.com熱心網友回復:
如果要替換的值the_list始終具有該格式,您還可以考慮使用 str.replace 和一個簡單的模式匹配大寫字符 AD 后跟字串開頭的下劃線^[A-D]_
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
uj5u.com熱心網友回復:
您還可以使用apply()pandas 中的函式。因此,如果字串具有相關模式,我們省略前兩個字符,否則回傳整個字串。
d["COL1"] = d["COL1"].apply(lambda x: x[2:] if x.startswith(("A_","B_","C_","D_")) else x)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354294.html
上一篇:正則運算式從嵌套的html標簽中洗掉所有屬性-Javascript
下一篇:用于查找所有貨幣值的正則運算式
