如何删除字符之间的空格而不删除数据框中的所有空格?

时间:2018-11-21 20:22:37

标签: python pandas dataframe

让我们说我有一个这样的数据框:

ID    Name       Description
0     Manny      V e  r y calm
1     Joey       Keen and a n a l y t i c a l
2     Lisa       R a s h and careless
3     Ash        Always joyful

我想删除Description列中每个字母之间的所有空格,而不必完全删除单词之间的所有必要空格。

在Pandas中有一种简单的方法吗?

1 个答案:

答案 0 :(得分:1)

这是一个棘手的问题,但是一种可以让您获得大部分收益的方法是使用消极和积极的lookbehinds / lookaheads编码一些基本规则。

根据您的描述,以下示例可能会很好地工作。它将错误地将已经爆炸的连续“真实”单词中的字符组合成单独的字符,但是如果这种情况很少见,可能会很好。您可以添加其他规则以涵盖更多的极端情况。

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个字母的单词)。但更具体地说,实际上只有在序列中最后一个空格之后有字母或任何以字符串结尾的字符时才替换空格。