簡體   English   中英

正則表達式替換python中列中的前兩個字母

[英]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 lettersCOL1是它們在該列表中:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM