Я бы искал способ в основном удалить, шаг за шагом, определенную строку.
categorie note nbavis taille nbdll type prix genre
10 ART_AND_DESIGN 4.1 159 19000000 10000 Free 0 Art & Design
15 ART_AND_DESIGN 3.9 967 14000000 500000 Free 0 Art & Design
16 ART_AND_DESIGN 4.7 87510 8.7000000 5000000 Free 0 Art & Design
17 ART_AND_DESIGN 4.5 215644 25000000 50000000 Free 0 Art & Design
28 ART_AND_DESIGN 4.3 967 2.8000000 100000 Free Everyone Art & Design
После удаления некоторой строки из-за NaN идентификаторы отличаются от индексов. Итак, я использовал:
app.loc[app['prix']=='Everyone',:]
Чтобы узнать больше о том, какая строка содержит «Все» в столбце «Приз».
Теперь я хотел бы найти индекс этой строки, который отличается от 28 (в этом примере это 4, количество python от 0, верно?)
Я старался :
app.index[app['prix'] == 'Everyone'].tolist()
Но результат дают мне [28]. Затем я попытался
app.loc[app.index==28]
Тот же результат. app.index[28] скажет мне:
IndexError: index 28 is out of bounds for axis 0 with size 5
Я почти уверен, что что-то пропустил. Есть много способов сделать это, но я хотел бы сделать это с помощью этого подхода. Например .drop
, del
, ...
Есть много тем, но ни одна не подходит под эти условия. Может быть, это невозможно. Как бы вы сделали это с помощью нескольких строк кода?
Спасибо
РЕДАКТИРОВАТЬ : Есть решения, которые я искал:
♣ Сбросить индекс
app = app.reset_index()
♣ Найдите строки (и индекс)
app.loc[app['prix']=='Everyone',:]
♣ Удалить эту строку, используя индекс
app = app.drop(4795)
◘ Другим решением было: app.drop([28])
Благодаря этому сообществу. И спасибо за редактирование моей темы, мой английский ужасен, ахах.
@iamchoosinganame да! И я хотел бы сделать это, используя индекс строки, который отличается от удаления строки с условием. Но меня это тоже интересует, ахах. Моя проблема в том, что я не могу найти хороший индекс, и я не знаю, как удалить строку, используя inded
df.drop(28)
работает? также вы уверены, что индекс является числом, а не строкой '28'
?
это сработало ! Спасибо. Мне пришлось сбросить индекс, чтобы найти хорошую строку, а затем удалить, это сработало!
Предположим, вы хотите исключить строки, в которых prix равен «Все».
new_df = app.loc[app['prix']!='Everyone']
new_df — это часть приложения. Вы можете сделать его новым объектом, используя копирование
new_df = app.loc[app['prix']!='Everyone'].copy()
Привет Спасибо за ваш комментарий! Это самый простой способ, так что это хорошо. Но там, просто чтобы сформировать себя, я хотел бы сделать это без создания новых данных
Чтобы оставить строку на месте:
app.drop(app[app['prix']=='Everyone'].index, inplace=True)
Попробуй это:
for r in app.iterrows():
if r[1]['prix']=='Everyone':
print(r[0])
С помощью метода iterrows() вы можете распечатать индекс по r[0], а столбцы будут в r[1], если вы хотите установить столбец в качестве индекса, вы можете использовать:
app.set_index("Column Name")
28 — это идентификатор строки кадра данных. Первоначально (до того, как вы удалили NA) это была 28-я строка (я полагаю, 29-я из-за индексации с нуля). Вы можете удалить строку на основе этого идентификатора.
app.drop([28])
Ааа, это моя проблема! Спасибо !
Вы хотите удалить строки со значением «Все» для столбца «prix»?