簡體   English   中英

pandas/regex: 去掉連字符或括號字符后的字符串(包括) carry string in the comma after the comma in pandas dataframe

[英]pandas/regex: Remove the string after the hyphen or parenthesis character (including) carry string after the comma in pandas dataframe

我有一個 dataframe 包含一列,其中有多個字符串由逗號分隔,但在這個字符串中,我想刪除連字符(包括連字符)之后的所有內容,要點是在某些情況下連字符不存在但有向括號所以我也想刪除它並在逗號后攜帶所有我該怎么做? 您可以在最后一行看到這種情況。

dd = pd.DataFrame()
dd['sin'] = ['U147(BCM), U35(BCM)','P01-00(ECM), P02-00(ECM)', 'P3-00(ECM), P032-00(ECM)','P034-00(ECM)', 'P23F5(PCM), P04-00(ECM)']

預計 output

dd['sin']
# output 
U147 U35
P01 P02
P3 P032
P034
P23F5 P04

只想在連字符或括號或任何特殊字符之前攜帶字符串。

以下代碼似乎重現了您想要的結果:

dd['sin'] = dd['sin'].str.split(", ")
dd = dd.explode('sin').reset_index()
dd['sin'] = dd['sin'].str.replace('\W.*', '', regex=True)

其中dd['sin']為:

0     U147
1      U35
2      P01
3      P02
4       P3
5     P032
6     P034
7    P23F5
8      P04
Name: sin, dtype: object

第二行中的.reset_index()調用是可選的,具體取決於您是否要保留該字符串來自哪一行。

您可以使用以下正則表達式

r"-\d{2}|\([EBP]CM\)|\s"


這是代碼:

sin = ['U147(BCM), U35(BCM)','P01-00(ECM), P02-00(ECM)', 'P3-00(ECM), P032-00(ECM)','P034-00(ECM)', 'P23F5(PCM), P04-00(ECM)']

dd = pd.DataFrame()
dd['sin'] = sin
dd['sin'] = dd['sin'].str.replace(r'-\d{2}|\([EBP]CM\)|\s', '', regex=True)
print(dd)

OUTPUT:

         sin
0   U147,U35
1    P01,P02
2    P3,P032
3       P034
4  P23F5,P04



編輯

或者使用此行刪除逗號:

dd['sin'] = dd['sin'].str.replace(r'-\d{2}|\([EBP]CM\)|\s', '', regex=True).str.replace(',',' ')

OUTPUT:

         sin
0   U147 U35
1    P01 P02
2    P3 P032
3       P034
4  P23F5 P04

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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