使用正则表达式 pandas 进行数据清理
Data cleaning with pandas using regular expressions
我有几个这样的正则表达式,
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'([^\w])',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'x{2,}',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'_+',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\d+',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\s{2,}',' ')
我想将所有标点符号、XXXXXXXX、所有数字、所有非字母数字替换为空字符串 ''
。如何将它们合并为一个替换正则表达式?
所以你想删除(根据你的问题)
- 标点符号
X{2,}
- 位数
- 任何不是字母或数字的东西
这里有重叠的主题。您希望只保留字母和单个空格。您可以将单独的模式压缩为一个模式 -
df = pd.DataFrame({'SUMMARY' : ['hello, world!', 'XXXXX test', '123four, five:; six...']})
df
SUMMARY
0 hello, world!
1 XXXXX test
2 123four, five:; six...
df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')
0 hello world
1 test
2 four five six
Name: SUMMARY, dtype: object
如果您的列有两个或更多空格,您必须单独调用并替换它们。
df.SUMMARY = df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')\
.str.replace(r'\s{2,}', ' ')
如果你想替换 x
的小写和大写 2 or more occurrences
并且你还想用空字符串替换空格(其他空白字符):
(?i)([^a-z]+|X{2,})
如果你想保留空白字符,如果你想替换 2 x
或更多的小写和大写链,请使用:
(?i)([^a-z\s]+|X{2,})
如果您只想删除 2 X
或更多的大写链并保留 x
的小写链:
([^a-zA-Z\s]+|X{2,})
我有几个这样的正则表达式,
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'([^\w])',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'x{2,}',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'_+',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\d+',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\s{2,}',' ')
我想将所有标点符号、XXXXXXXX、所有数字、所有非字母数字替换为空字符串 ''
。如何将它们合并为一个替换正则表达式?
所以你想删除(根据你的问题)
- 标点符号
X{2,}
- 位数
- 任何不是字母或数字的东西
这里有重叠的主题。您希望只保留字母和单个空格。您可以将单独的模式压缩为一个模式 -
df = pd.DataFrame({'SUMMARY' : ['hello, world!', 'XXXXX test', '123four, five:; six...']})
df
SUMMARY
0 hello, world!
1 XXXXX test
2 123four, five:; six...
df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')
0 hello world
1 test
2 four five six
Name: SUMMARY, dtype: object
如果您的列有两个或更多空格,您必须单独调用并替换它们。
df.SUMMARY = df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')\
.str.replace(r'\s{2,}', ' ')
如果你想替换 x
的小写和大写 2 or more occurrences
并且你还想用空字符串替换空格(其他空白字符):
(?i)([^a-z]+|X{2,})
如果你想保留空白字符,如果你想替换 2 x
或更多的小写和大写链,请使用:
(?i)([^a-z\s]+|X{2,})
如果您只想删除 2 X
或更多的大写链并保留 x
的小写链:
([^a-zA-Z\s]+|X{2,})