【问题标题】:remove spaces in selected pandas columns at once一次删除选定熊猫列中的空格
【发布时间】:2020-08-18 22:37:57
【问题描述】:

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

如何在 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这个不是重复的,它只用于列名

【问题讨论】:

    标签: python pandas


    【解决方案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)
    

    【讨论】:

    • 没有错误了,但是空格没有被删除,也尝试了applymap,但是空格仍然存在,知道为什么吗?
    • @sygneto - 嗯,对我来说工作得很好,也许是一些与数据相关的问题,是否可以检查数据在列表中的外观? print (df['A'].tolist()) ?
    • 谢谢,我在其他列中发现了一个问题,我的真实数据有问题,就像 A_B 和其他行 A__B,因此移动了带有两个“_”的行我的其他专栏,这就是为什么我认为我应该删除空间。无论如何,我的问题都可以回答
    【解决方案2】:

    另一种方法是使用您选择的列类型立即执行此操作:

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

    您可以将表示字符串类型的“object”类型替换为“bool”、“int64”等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-12
      • 2015-05-19
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      相关资源
      最近更新 更多