使用正则表达式模式替换数字后跟子字符串或数字后跟 space 然后子字符串
Use regex pattern to replace numbers followed by a substring or numbers followed by a space and then substring
对于 pandas 数据框中的列,我想删除紧跟 "gb" 或 "mb" 或中间有 space 的任何数字,完整地。 IE。删除诸如“500 gb”和“500mb”之类的字符串。
Column_To_Fix
0 coolblue 100gb
1 connector 500 mb for thing
2 5gb for user
3 load 800 mb
4 1000 add-on
5 20 gb
以下函数仅适用于第 0 行和第 2 行,不确定如何添加模式的 space 要求:
pat = '(^|\s)\d+(gb|mb)($|\s)'
df['Column_To_Fix'].str.lower().replace(pat, ' ', regex=True)
期望的输出:
Column_To_Fix
0 coolblue
1 connector for thing
2 for user
3 load
4 1000 add-on
5
试试这个模式
pat = '\d+ *(gb|mb)'
df['Column_To_Fix'].str.lower().str.replace(pat, ' ')
Out[462]:
0 coolblue
1 connector for thing
2 for user
3 load
4 1000 add-on
5
Name: Column_To_Fix, dtype: object
如果你喜欢series.replace
df['Column_To_Fix'].str.lower().replace(pat, ' ', regex=True)
我假设文本是(没有行号):
coolblue 100gb
connector 500 mb for thing
5gb for user
load 800 mb
1000 add-on
20 gb
并且期望的结果(保持正确的对齐和间距)是:
coolblue
connector for thing
for user
load
1000 add-on
在最后一行有一个空字符串。这可以通过将以下正则表达式的匹配项替换为空字符串(使用 re.sub
)来实现。
r'(?:^\d+ ?[gm]b | \d+ ?[gm]b(?= |$))'
对于 pandas 数据框中的列,我想删除紧跟 "gb" 或 "mb" 或中间有 space 的任何数字,完整地。 IE。删除诸如“500 gb”和“500mb”之类的字符串。
Column_To_Fix
0 coolblue 100gb
1 connector 500 mb for thing
2 5gb for user
3 load 800 mb
4 1000 add-on
5 20 gb
以下函数仅适用于第 0 行和第 2 行,不确定如何添加模式的 space 要求:
pat = '(^|\s)\d+(gb|mb)($|\s)'
df['Column_To_Fix'].str.lower().replace(pat, ' ', regex=True)
期望的输出:
Column_To_Fix
0 coolblue
1 connector for thing
2 for user
3 load
4 1000 add-on
5
试试这个模式
pat = '\d+ *(gb|mb)'
df['Column_To_Fix'].str.lower().str.replace(pat, ' ')
Out[462]:
0 coolblue
1 connector for thing
2 for user
3 load
4 1000 add-on
5
Name: Column_To_Fix, dtype: object
如果你喜欢series.replace
df['Column_To_Fix'].str.lower().replace(pat, ' ', regex=True)
我假设文本是(没有行号):
coolblue 100gb
connector 500 mb for thing
5gb for user
load 800 mb
1000 add-on
20 gb
并且期望的结果(保持正确的对齐和间距)是:
coolblue
connector for thing
for user
load
1000 add-on
在最后一行有一个空字符串。这可以通过将以下正则表达式的匹配项替换为空字符串(使用 re.sub
)来实现。
r'(?:^\d+ ?[gm]b | \d+ ?[gm]b(?= |$))'