Найдите строку и ее индекс, затем удалите эту строку, используя индекс

Я бы искал способ в основном удалить, шаг за шагом, определенную строку.

      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]) Благодаря этому сообществу. И спасибо за редактирование моей темы, мой английский ужасен, ахах.

Вы хотите удалить строки со значением «Все» для столбца «prix»?

iamchoosinganame 30.05.2019 17:53

@iamchoosinganame да! И я хотел бы сделать это, используя индекс строки, который отличается от удаления строки с условием. Но меня это тоже интересует, ахах. Моя проблема в том, что я не могу найти хороший индекс, и я не знаю, как удалить строку, используя inded

RandomSpiRiT 30.05.2019 17:56

df.drop(28) работает? также вы уверены, что индекс является числом, а не строкой '28'?

anky 30.05.2019 17:58

это сработало ! Спасибо. Мне пришлось сбросить индекс, чтобы найти хорошую строку, а затем удалить, это сработало!

RandomSpiRiT 30.05.2019 18:04
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
120
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Предположим, вы хотите исключить строки, в которых prix равен «Все».

new_df = app.loc[app['prix']!='Everyone']

new_df — это часть приложения. Вы можете сделать его новым объектом, используя копирование

new_df = app.loc[app['prix']!='Everyone'].copy()

Привет Спасибо за ваш комментарий! Это самый простой способ, так что это хорошо. Но там, просто чтобы сформировать себя, я хотел бы сделать это без создания новых данных

RandomSpiRiT 30.05.2019 17:58

Чтобы оставить строку на месте:

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])

Ааа, это моя проблема! Спасибо !

RandomSpiRiT 30.05.2019 18:12

Другие вопросы по теме