如何从df列标题中删除空格(条带不起作用)

时间:2018-02-22 03:39:47

标签: python pandas

我已经看过几次这个问题了,但建议的答案似乎并不适合我。我带了一个带有read_csv的csv,并试图清理这些名字,最初是:

In [89]: data.columns
Out[89]: 
Index(['Node Number', 'X [ m ]', 'Y [ m ]', 'Z [ m ]',
       'Turbulence Kinetic Energy [ m^2 s^-2 ]', 'turbulenceIntensity',
       'Velocity u [ m s^-1 ]', 'Velocity v [ m s^-1 ]',
       'Velocity w [ m s^-1 ]', 'windspeedratio'],
      dtype='object')

我发现的最简单的建议应该是:

data.rename(columns=lambda x: x.strip(), inplace=True)

但如果我尝试,那绝对没有变化。与

相同
data.columns = data.columns.str.strip()

知道为什么吗?

2 个答案:

答案 0 :(得分:3)

好像您需要replace所有' '''

df.columns.str.replace(' ','')
Out[103]: 
Index(['NodeNumber', 'X[m]', 'Y[m]', 'Z[m]',
       'TurbulenceKineticEnergy[m^2s^-2]', 'turbulenceIntensity',
       'Velocityu[ms^-1]', 'Velocityv[ms^-1]', 'Velocityw[ms^-1]',
       'windspeedratio'],
      dtype='object')

答案 1 :(得分:-1)

Strip仅删除前导和尾随空格。如果你想删除所有空格(包括各种白色空格,如标签,换行符,空格等),以下内容将起作用

import string
def remove_whitespace(x):
    table = {ord(char): None for char in string.whitespace}
    return x.translate(table)

data.rename(columns=remove_whitespace, inplace=True)

正如布拉德所提到的,以下内容可以用于同样的效果。

df.columns.str.replace(r'\s+', '')