从pandas中的所有列值条带化空间

时间:2017-02-14 14:58:57

标签: python pandas numpy

我正在处理一个问题集,其中我们在pandas数据框中有很多列,其中许多列都有尾随空格。我的问题是,是否有更好的方法来删除这些空格,而不是创建一个动态字符串(我们将列名作为变量传递给它并附加strip()),然后为每一列执行它。

1 个答案:

答案 0 :(得分:1)

如果没有一个例子,就不能完全清楚你想要完成什么,但也许以下内容会有所帮助:

import pandas as pd

df = pd.DataFrame({'A  ': [1, 2], 'B ': [4, 5], 'C': [8,9]})

列标题确实有尾随空格:

df.columns
Index([u'A  ', u'B ', u'C'], dtype='object')

现在您可以使用mapstrip来摆脱它们:

df.columns = df.columns.map(lambda x: x.strip())

或者

df.columns = df.columns.map(str.strip)

或简单(也可能是最快的解决方案)

df.columns = df.columns.str.strip()

如果你现在打电话

df.columns

它产生

Index([u'A', u'B', u'C'], dtype='object')

如果是关于值而不是标题,您还可以使用applymap

df = pd.DataFrame({'A': ['1', '2  '], 'B': ['4 ', '5 '], 'C': ['8 ','9']})

     A   B   C
0    1  4   8 
1  2    5    9

然后以下消除了尾随的空格:

df.applymap(lambda x: x.strip())

或者

df.applymap(str.strip)

   A  B  C
0  1  4  8
1  2  5  9

注意:这假定您的列中只有字符串。您还可以查看this link