如何在此示例中从Python DataFrame中删除空格

时间:2017-03-23 02:50:11

标签: python function whitespace apply strip

我正在将Excel文件读入DataFrame。我需要从所有单元格中删除空格,在Python 3.5中保留其他单元格不变。 例如:

from pandas import Series, DataFrame
import pandas as pd
import numpy as np

#read data from DataFrame
data_ThisYear_Period=[[' 序 号','北  京','上  海','  广州'],\
                      ['  总计','11232',' 2334','3 4'],\
                      [' 温度','1223','23 23','2323'],\
                      ['人 口','1232','21 321','1222'],\
                      ['自行车', '1232', '21321', '12  22']]
data_LastYear_Period=DataFrame(data_ThisYear_Period)
print(type(data_LastYear_Period))

data_ThisYear_Period.apply(data_ThisYear_Period.str.strip(),axis=1)

Traceback(最近一次调用最后一次):   文件“C:/test/temp.py”,第17行,in     data_ThisYear_Period.apply(data_ThisYear_Period.str.strip(),轴= 1) AttributeError:'list'对象没有属性'apply'

如何在此示例中从Python DataFrame中删除空格

1 个答案:

答案 0 :(得分:1)

使用applymap到数据帧,applymap在每个单元格上应用lambda函数。在lambda函数中拆分字符串(在其中忽略空格)然后加入它。如果有一个int,那么你可以在lambda函数中使用if else。

from pandas import Series, DataFrame
import pandas as pd
import numpy as np

#read data from DataFrame
data_ThisYear_Period=[[' 序 号','北  京','上  海','  广州'],\
                      ['  总计','11232',' 2334','3 4'],\
                      [' 温度','1223','23 23','2323'],\
                      ['人 口',1232,'21 321','1222'],\
                      ['自行车', '1232', '21321', '12  22']]

data_LastYear_Period=DataFrame(data_ThisYear_Period)
print data_LastYear_Period
data_LastYear_Period = data_LastYear_Period.applymap((lambda x: "".join(x.split()) if type(x) is str else x ))

print data_LastYear_Period

结果

      0      1       2       3
0   序 号   北  京    上  海      广州
1    总计  11232    2334     3 4
2    温度   1223   23 23    2323
3   人 口   1232  21 321    1222
4   自行车   1232   21321  12  22

     0      1      2     3
0   序号     北京     上海    广州
1   总计  11232   2334    34
2   温度   1223   2323  2323
3   人口   1232  21321  1222
4  自行车   1232  21321  1222

在旁注中,您收到此特定错误,因为

data_ThisYear_Period.apply(data_ThisYear_Period.str.strip(),axis=1)

data_ThisYear_Period是一个列表而不是pandas数据帧(data_LastYear_Period