Удалить пробел из всего DataFrame - PullRequest
0 голосов
/ 09 октября 2019

у меня есть датафрейм, 22 столбца и 65 строк. Данные поступают из CSV-файла. Каждое из значений в dataframe имеет дополнительный нежелательный пробел. Поэтому, если я делаю цикл в столбце «Год» с помощью Len (), я получаю

2019  5
2019  5
2018  5
...

, это 1 дополнительный пробел появляется во всем DF в каждом значении. Я попытался запустить .strip () на DF, но атрибута не существует

Я попробовал 'для каждого df [column] .str.strip (), но в каждом столбце есть различные типы данных ... dtypes:float64 (6), int64 (4), object (14), так что это ошибки.

есть идеи о том, как применить функцию для всего фрейма данных, и если да, то какая функция / метод? если нет, то какой лучший способ справиться?

Ответы [ 3 ]

0 голосов
/ 09 октября 2019

Обработка ошибки:

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

Обычно, я бы сказал, выберите object dtypes, но это все еще может быть проблематичным, если данные достаточно грязны, чтобы хранить числовые данные вконтейнер объекта.

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!
0 голосов
/ 09 октября 2019

Попробуйте это:

for column in df.columns:
    df[column] = df[column].apply(lambda x: str(x).replace('  ', ' '))
0 голосов
/ 09 октября 2019

Вы должны использовать функцию apply(), чтобы сделать это:

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

Вы можете применить эту функцию к каждому столбцу отдельно:

for column in df.columns:
    df[column] = df[column].apply(lambda x:x.strip() )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...