检查列中的字符串是否与两种格式之一匹配,如果不匹配,重新格式化字符串

2024-10-01 04:46:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一列字符串,它们是ID,应该遵循以下格式:C-xxxxx-U-##或C-xxxxx-UX-###其中x可以是数字或大写字母。你知道吗

我想检查ID是否遵循这两种格式中的任何一种,如果不遵循,我想重新格式化字符串。你知道吗

一些示例数据:

C-20BV7-U-00
C-20BW5-U-00
C1AWT4-UR-00  <--- wrong format
C-1B8V9-UR-00
C-20BX2-U-00

我想这会给我一些不遵循这种格式的行

result=df["ID"].str.match(pat='C-[A-Z0-9]{5}-U[A-Z0-9]{0,1}-[0-9]{2}$')
temp=df.loc[~result,"ID"]

但是,我如何改变格式,以我想要的没有具体的替代,因为我不知道它到底会有什么不同的格式


Tags: 数据字符串id示例df格式数字result
1条回答
网友
1楼 · 发布于 2024-10-01 04:46:32

使用特定的正则表达式替换:

In [51]: df['ID'].str.replace(r'^C([^-])', 'C-\\1').replace(r'-U[^A-Z0-9]+', '-U')                           
Out[51]: 
0     C-20BV7-U-00
1     C-20BW5-U-00
2    C-1AWT4-UR-00
3    C-1B8V9-UR-00
4     C-20BX2-U-00
Name: ID, dtype: object

相关问题 更多 >