Pandas DataFrame 中多余空格的删除方法

Pandas DataFrame 中多余空格的删除方法

在本文中,我们将介绍Pandas数据结构DataFrame中如何删除多余的空格。在实际数据处理中,常常会发现在DataFrame中有额外的空格,这会影响到后续数据分析的结果,且数据质量差差,因此在进行数据清洗时需要将这些多余的空格进行删除。

阅读更多:Pandas 教程

问题背景

在以下的DataFrame中,可以看到某些单元格中存在空格,这些空格有时由用户输入和处理数据方式不同导致。

Name Age Gender Email
0 Johnny 22 Male johnny@gmail.com
1 Betty 33 Female betty@126.com
2 Franky 28 Male franky@qq. com
3 Liza Minn 25 Female liza@outlook. com

在这个DataFrame中,我们注意到一些问题:

  • 第一行中的Email 右侧存在多个空格
  • 第三行中的gender 左侧存在一个空格
  • 第四行中的email中outlook 和.com之间存在额外的空格

这三种情况都会干扰后续的数据分析。

Pandas 删除多余空格的方法

Pandas 提供了很多方法用于DataFrame中的空格处理,其中包括strip, rstrip, lstrip等方法,它们可以分别用于去除字符串两端、右端、左端的空格和其他自定义字符。

以下是一些用于删除DataFrame中多余空格的方法,可根据具体的情况选择适合的方法来进行处理。

strip方法

strip方法可以删除两端多余的字符,默认情况下会删除两端的空白字符,所以strip()方法很适合用于处理本文开头提到的第一种情况。即Email那一列右端的多个空格。

在删除两端空格的过程中,需要分离出需要处理的一列并在后面跟上.str.strip()方法,所以实际使用时可以配合熟悉的Pandas的indexing syntax使用。

#把多余的空格删除
df['Email'] = df['Email'].str.strip()
Python

rstrip方法

rstrip方法可以删除右端多余的字符,默认情况下会删除右端的空白字符,所以rstrip()方法很适合用于去除字符串中超过两个空格这种情况。

#删除 email 中的多余空格
df['Email'] = df['Email'].str.rstrip()
Python

lstrip方法

lstrip方法可以删除左侧多余的字符,默认情况下会删除左侧的空白字符,所以lstrip()方法很适合用于去除字符串中超过两个空格这种情况。

#删除 gender 中的多余空格
df['Gender'] = df['Gender'].str.lstrip()
Python

apply方法

Pandas包括apply()方法,它可以使用Python自定义函数在DataFrame上进行特定操作。下面示例是一个使用apply方法去除字符串中的多余空格的例子。

#定义函数去除多余空格
def remove_space(x):
    return " ".join(x.split())

#在每个cell上执行remove_space函数
df.apply(lambda x: x.astype(str).apply(remove_space) if x.dtype == "object" else x)
Python

注意:以上示例中均仅作用于某一列,如果要作用于整个DataFrame中的多列,可使用applymap()方法。

#使用applymap作用于整个dataframe中的多列
df = df.applymap(lambda x: x.strip() if type(x) == str else x)
Python

总结

在本文中,我们学习了如何使用Pandas删除DataFrame中多余的空格。这些方法包括:

  • strip方法:删除两端的空格
  • rstrip方法:删除右端的空格
  • lstrip方法:删除左端的空格
  • apply方法:在DataFrame上应用自定义函数。

在实际数据清洗过程中,需要看具体情况选择合适的方法进行处理。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册