在本例中,如何从Python数据帧中去除空白

在本例中,如何从Python数据帧中去除空白,python,function,whitespace,apply,strip,Python,Function,Whitespace,Apply,Strip,我正在将excel文件读入数据框。在Python 3.5中,我需要去掉所有单元格中的空白,保持其他单元格不变。 例如: from pandas import Series, DataFrame import pandas as pd import numpy as np #read data from DataFrame data_ThisYear_Period=[[' 序 号','北 京','上 海',' 广州'],\ [' 总计','11

我正在将excel文件读入数据框。在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)
回溯(最近一次呼叫最后一次): 文件“C:/test/temp.py”,第17行,在 data\u ThisYear\u Period.apply(data\u ThisYear\u Period.str.strip(),轴=1) AttributeError:“列表”对象没有属性“应用”


如何从Python数据框中去除空白在本例中,

将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\u this year\u Period
是一个列表,而不是一个数据框(
data\u last year\u Period

非常感谢!在本例中,它是有效的。但当我从excel中读取DataFrame时,它在索引处出现了:AttributeError:(“'int'对象没有属性'split'”序号 '), 如何解决?谢谢!如果有int,那么可以在lambda函数中使用If-else。请参阅编辑。