Удалить пустой столбец данных не работает - PullRequest
0 голосов
/ 22 февраля 2020

Мой вопрос задавался несколько раз, и я реализовал предоставленные ответы, но ни один из них не сработал. У меня есть dataframe , который содержит столбец объекта, где все его ячейки являются пустыми строками. Я пытался отбросить его, используя следующие методы отдельно каждый раз:

data.dropna()
data.dropna(axis=1, inplace=True)
data.dropna(axis='columns', how='all', inplace=True)
data.mask(data.astype(bool)).dropna(axis=1, how='all')
data.dropna(subset=['columnName'], inplace=True) 

filter = data['columnName'] != ""
data = data[filter]

Кроме того, однажды я попытался заменить пустые ячейки на Nan, используя:

data['columnName'].replace('', np.nan, inplace=True)

а затем опустите столбец, но, как ни странно, в соответствующем столбце ничего не изменилось даже на NaN. В приведенных выше строках кода везде, где это требовалось, я снова присваивал результат методам data, но ни один из них не работал. Интересно, что использовать вместо этого, что работает?

Это пример данных:

BUILDING CATEGORY      MEANS OF ACCESS      ADDRESS      PRICE
rental                                        UK       £700000
commercial                                    UK       £5000000

Я намерен отбросить СРЕДСТВА ДОСТУПА.

ОБНОВЛЕНИЕ Фрагмент кода выглядит следующим образом:

# Remove the initial 2 rows
data = pd.read_csv(file, skiprows=2, low_memory=False)

# Remove the irrelevant columns
data = data.drop(['REGION', 'NUMBER'], axis=1)

# Remove '$' sign
data['PRICE'] = [x[1:] for x in data['PRICE']]

columns = ['WHOLE UNITS', 'AREA', 'PRICE']

# Remove comma
data[columns] = data[columns].apply(lambda x: x.str.replace(',', ''))

# Convert to numeric
data[columns] = data[columns].apply(pd.to_numeric)

# Remove duplicate rows
data.drop_duplicates(inplace=True)

print((data['MEANS OF ACCESS'] == "").sum())  #returns 0 but it shouldn't

1 Ответ

0 голосов
/ 22 февраля 2020

Если вы хотите удалить столбец 'column_name', просто используйте

df = df.drop(labels=['column_name'], axis=1)

Если вы хотите удалить все столбцы, которые содержат только пустые строки, используйте

df = df.replace('', pd.NA).dropna(axis=1, how='all')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...