Удалить дубликаты на основе версий текста - PullRequest
0 голосов
/ 21 мая 2018

Вот мои данные, я хочу отфильтровать по последней версии

Id       Score     Version
1           67     One
1           89     Three
2           78     Two
2           70     One

Вот что я хочу, потому что Three> Two> One

Id       Score     Version
1           89     Three
2           78     Two

ЧтоЯ сделал это

versions = data.scorecard_version.str.extract('(One|Two|Three)', expand = False)
dummies = pd.get_dummies(versions)
df = pd.concat([df,dummies],axis = 1)
df['versions'] = df['One']*1 + df['Two']*2 + df['Three']*3

И затем фильтр Макс, но я ищу лучшее решение

1 Ответ

0 голосов
/ 21 мая 2018

Вы можете отобразить ваши значения, отсортировать и затем удалить дубликаты:

df = pd.DataFrame([[1,67,'one'], [1, 89, 'three'],
               [2, 78,  'two'], [2, 70, 'one']], columns = ['Id', 'Score', 'Version' ])    
d = {'one':1,'two':2, 'three':3}
df['vers'] = df['Version'].map(d)
df = df.sort_values('vers', ascending=False).drop_duplicates('Id').sort_index()

Вывод:

   Id  Score Version  vers
1   1     89   three     3
2   2     78     two     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...