2016-10-10 2 views
0

Я имею следующую группуПанды не падает нан

   unemp nobsRel measure rank nobsRel2 nobsCumSummed 
year foo                
2000 8010 0.000024 0.000167  1.0 348.0 0.000167  0.980176 
    4950 0.000264 0.003630  1.0 349.0 0.003630  0.983806 
    2540 0.000438 0.011027  1.0 350.0 0.011027  0.994833 
    9830 0.000118 0.000118  NaN NaN 0.000118  0.994952 
    9920 0.005048 0.005048  NaN NaN 0.005048  1.000000 

Вот что происходит, когда я пытаюсь бросить дубликаты:

В [104]: test.drop_duplicates (подмножество = 'Оценка') Out [104]:

   unemp nobsRel measure rank nobsRel2 nobsCumSummed 
year foo                
2000 8010 0.000024 0.000167  1.0 348.0 0.000167  0.980176 
    4950 0.000264 0.003630  1.0 349.0 0.003630  0.983806 
    2540 0.000438 0.011027  1.0 350.0 0.011027  0.994833 
    9830 0.000118 0.000118  NaN NaN 0.000118  0.994952 

Почему последний ряд все еще там? Это отсутствует!

In[105]: np.isnan(test.loc[(2000, 9830), 'rank']) 
Out[105]: 
True 

Я на pandas 0.19.0

+1

Это поведение по умолчанию: 'Брось дубликаты за первый occurrence' исключением, так что попробуйте:' test.drop_duplicates (подмножество = 'ранг', держать = False) 'вместо – MaxU

+0

Я только что вернулся из редактирования своего ответа, чтобы найти это. Почему вы не добавили его в качестве ответа, тогда я мог бы удалить мою (что было до изменения, так или иначе). – holdenweb

ответ

5

Метод drop_duplicates() исключает дубликаты, кроме первого (по умолчанию). Тем не менее, вы можете выбрать, какой из них следует сохранить, изменив параметр , удерживая, установив его на last, first или False. Посмотрите на documentation here

Попробуйте это:

test.drop_duplicates(subset='rank', keep=False) 
+0

Хороший ответ. Дает именно необходимую информацию с полезной ссылкой. Так держать! – holdenweb

+0

@holdenweb Большое спасибо за ваши поощрения! Я стараюсь быть максимально точным и максимально синтетическим! – MMF

1

К сожалению, оказалось, что drop_duplicates не делать то, что вы хотите. Он удаляет дубликаты, но не исходную строку, в которой дубликаты являются дубликатом ...

К счастью, это может быть отменено с помощью опции keep=False.