一次删除所选熊猫列中的空格

时间:2019-11-08 07:25:45

标签: python pandas

我认为这是一个简单的问题,但我对此有疑问。

如何在pandas数据框中一次删除多列中的空格? 示例df:

A, B, C, D, E
 d,d ,s,s,a 
a ,a ,s,a ,r

我要删除列中的空间:A,B,D,E

通常我正在使用这种方法:

df['col']=df['col'].apply(lambda x: x.strip())

在我尝试使用的上方扩展了这一点:

df[['A','B','D','E']]=df[['A','B','D','E']].apply(lambda x : x.strip())

但是我收到一个错误: AttributeError: ("'Series' object has no attribute 'strip'"

如何解决?

另外Removing space from dataframe columns in pandas并非重复,仅适用于列名

2 个答案:

答案 0 :(得分:1)

使用Series.str.strip,因为使用Seriescolumns):

print (df)
    A   B  C   D   E
0   d  d   s   s  a 
1  a   a   s  a    r

df[['A','B','D','E']]=df[['A','B','D','E']].apply(lambda x : x.str.strip())
print (df)
   A  B  C  D  E
0  d  d  s  s  a
1  a  a  s  a  r

DataFrame.applymap应该可以解决您的问题:

df[['A','B','D','E']]=df[['A','B','D','E']].applymap(lambda x : x.strip())

或在可能的情况下使用:

df = pd.read_csv(file, skipinitialspace=True)

答案 1 :(得分:1)

其他方法是使用您选择的列类型立即执行以下操作:

df[df.select_dtypes(include=['object']).columns] = df[df.select_dtypes(include=['object']).columns].apply(lambda x: x.str.strip())

您可以在其中将表示字符串类型的'object'类型替换为'bool','int64'等。

相关问题