假设我有一个这样的数据框:ID Name Description0 Manny V e r y calm1 Joey Keen and a n a l y t i c a l2 Lisa R a s h and careless3 Ash Always joyful我想删除Description列中每个字母之间的所有空格,而不完全删除单词之间的所有必要空格。在 Pandas 中有一个简单的方法吗?
1 回答

哆啦的时光机
TA贡献1779条经验 获得超6个赞
这是一个棘手的问题,但有一种方法可以让您获得大部分方法,即使用负面和正面的后视/前瞻来编码一些基本规则。
鉴于您所描述的内容,以下示例可能会很好地工作。它会错误地将连续的“真实”单词中的字符组合成单独的字符,但如果这种情况很少见,这可能没问题。您可以添加其他规则以涵盖更多边缘情况。
import re
import pandas as pd
s = pd.Series(['V e r y calm', 'Keen and a n a l y t i c a l',
'R a s h and careless', 'Always joyful'])
regex = re.compile('(?<![a-zA-Z]{2})(?<=[a-zA-Z]{1}) +(?=[a-zA-Z] |.$)')
s.str.replace(regex, '')
0 Very calm
1 Keen and analytical
2 Rash and careless
3 Always joyful
dtype: object
这个正则表达式有效地说:
查找空格序列并替换空格,但前提是它们之前有一个字母。如果有两个字母,不要做任何事情(即一个 2 个字母的单词)。但更具体地说,实际上只有在序列中最后一个空格后面有一个字母或任何终止字符串的字符时才替换空格。
添加回答
举报
0/150
提交
取消