从整个DataFrame中删除空格

时间:2019-10-09 19:36:50

标签: python pandas

我有一个数据框,22列和65行。数据来自csv文件。 带有数据框的每个值都有一个多余的空白。因此,如果我使用Len()在“年份”列上循环,我会得到

2019  5
2019  5
2018  5
...

在每个DF中,每个值中都出现这1个多余的空格。我尝试在DF上运行.strip(),但不存在属性

我为每个df [column] .str.strip()尝试了一个',但是每一列中都有各种数据类型... dtypes:float64(6),int64(4),object(14),所以这错误。

关于如何将函数应用于整个数据框的任何想法,如果有的话,什么函数/方法?如果不是最好的方法是什么?

3 个答案:

答案 0 :(得分:0)

您应该使用9d5f269e42d4ca76函数来执行此操作:

apply()

您可以将此功能分别应用于每列:

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

答案 1 :(得分:0)

处理错误:

for col in df.columns:
    try:
        df[col] = df[col].str.strip()
    except AttributeError:
        pass

通常情况下,我会选择object dtype,但是如果数据杂乱无章,无法在对象容器中存储数字数据,那还是有问题的。

import pandas as pd

df = pd.DataFrame({'foo': [1, 2, 3], 'bar': ['seven ']*3})
df['foo2'] = df.foo.astype(object)

for col in df.select_dtypes('object'):
    df[col] = df[col].str.strip()
#AttributeError: Can only use .str accessor with string values!

答案 2 :(得分:0)

尝试一下:

for column in df.columns:
    df[column] = df[column].apply(lambda x: str(x).replace('  ', ' '))