Удаление строк с дублирующимся столбцом pandas dataframe (Python)

У меня есть csv, который я прочитал с помощью pandas и создал фрейм данных. Фрейм данных выглядит так:

description     title
lorem ipsum       A
ipsum lorem       A
dolor sit amet    C
amet sit dolor    B

Он имеет 1034 строки и 2 столбца

Теперь я хочу удалить все строки с повторяющимися заголовками из фрейма данных и получить такой фрейм данных:

description     title
lorem ipsum       A
dolor sit amet    C
amet sit dolor    B

Я нашел решение, в котором говорится об удалении дубликатов с помощью drop_duplicates(). В моем сценарии я сделал:

df.drop_duplicates('title', inplace = True)

Когда я print df, он все еще показывает 1034 строки, но в конце он отображает [967 x 2], что означает, что у него 967 строк, и он удалил дубликаты. Даже выполнение df.shape говорит мне то же самое. Но когда я печатаю или повторяю, кажется, что это не работает. Фактически, даже длина печати определенного столбца дает мне 967. Пример: print len(df['title']) дает мне 967. Просто индексы фреймов данных имеют одинаковую нумерацию? Или у него действительно все еще 1034 строки? В чем может быть проблема?

Прилагаю свой код:

df = pd.read_csv('latestdata.csv', sep='\t')
df.drop_duplicates('title', inplace=True)
print df

person Vipul Mehra    schedule 29.04.2017    source источник
comment
Что, если вы запустите код с небольшим примером ?!   -  person Elmex80s    schedule 29.04.2017
comment
Должен ли я создать фиктивный фрейм данных и протестировать небольшой набор значений?   -  person Vipul Mehra    schedule 29.04.2017
comment
Нет, просто создайте фиктивный .csv - ›запустите свой код -› посмотрите, что он дает.   -  person Elmex80s    schedule 29.04.2017
comment
Я пробежал, и оказалось, что после отбрасывания он не меняет порядковые номера. Спасибо чувак!   -  person Vipul Mehra    schedule 02.05.2017


Ответы (1)


Дубликаты дропа работают нормально. Ваш код в порядке. Вот объяснение того, что происходит. Когда вы создаете фреймворк pandas и не указываете индекс, pandas индексирует строки самостоятельно, просто увеличивая целочисленное значение.

Когда вы удаляете дубликаты, все индексы, которые являются дубликатами, удаляются. Если вы хотите сбросить индекс, сделайте следующее:

df.reset_index(inplace=True)

И ваш фрейм данных будет повторно проиндексирован, и вы увидите, что последний индекс равен 967, когда вы распечатаете свой df.

person Satyadev    schedule 29.04.2017