我认为这是一个简单的问题,但我对此有疑问。
如何在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并非重复,仅适用于列名
答案 0 :(得分:1)
使用Series.str.strip
,因为使用Series
(columns
):
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'等。