Python + Pandas + Dataframe + CSV: код удаляет все строки из данных вместо указанных - PullRequest
0 голосов
/ 05 октября 2018

Я написал код для удаления всех строк с NaN в столбце category_id, который успешно удалил строки с NaN в столбце category_id:

   #removal of rows in dataframe that have NaN values in 'category_id' column

   #data = data[np.isfinite(data['category_id'])]
   data = data[data['category_id'].notnull()]

   print(data['category_id'].shape)
   data.to_csv('dataset.csv', encoding='utf-8', index=False)
   print(type(data['category_id']))

Вывод:

(778,)
<class 'pandas.core.series.Series'>

Затем я написал код для сохранения всех строк, которые имеют только значения, указанные в списке:

#selecting rows of the dataset whose 'category' column has values mentioned in a list


category_ids = [19, 22, 2, 30, 23]
data = data[data.category_id.isin(category_ids)]
print(data.shape) 

data.to_csv('dataset.csv', encoding='utf-8', index=False)

Вывод:

(0, 164)

Итак, он создает пустой фрейм данных и CSV.Зачем?

1 Ответ

0 голосов
/ 05 октября 2018

Проблема в том, что ваши данные представляют собой строки, а не целые числа в столбце category_id.

print (data.category_id.dtype)
object

Поэтому необходимо преобразовать значения в списке в строки:

category_ids = ['19', '22', '2', '30', '23']
data = data[data.category_id.isin(category_ids)]

Или преобразовать столбец в целые числаSeries.astype:

category_ids = [19, 22, 2, 30, 23]
data = data[data.category_id.astype(int).isin(category_ids)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...