Замените исходные строки дублирующимися строками, затем удалите дубликаты - PullRequest
2 голосов
/ 11 октября 2019

У меня есть фрейм данных, похожий на

    Name   Value  Value2
     A       1      11        
     B       2      12
     C       3      13
     A       4      14
     B       5      15

Мне нужно взять строки, в которых Name является дубликатом, и заменить строки первым вхождением на последнее вхождение, а затем удалить последние дубликаты. Таким образом, в этом примере результат будет

    Name   Value  Value2
     A       4      14
     B       5      15
     C       3      13    

Каков эффективный способ сделать это?

Ответы [ 4 ]

2 голосов
/ 11 октября 2019

Как это?

data.drop_duplicates(subset='Name', keep='last').sort_values('Name')
1 голос
/ 11 октября 2019

Использование groupby.last :

df.groupby('Name',as_index=False).last()

Вывод:

  Name  Value  Value2
0    A      4      14
1    B      5      15
2    C      3      13
1 голос
/ 11 октября 2019

Попробуйте использовать

df = df.groupby('Name',as_index=False).nth(-1)
0 голосов
/ 11 октября 2019

Поскольку вы хотите сохранить последнее вхождение каждого отдельного значения Name, вам не нужно будет заменять более ранние. Вам нужно просто удалить дубликаты, отфильтрованные по Name и передать параметр keep='last':

data = {'Name':['A','B','C','A','B'],'Value':[1,2,3,4,5],'Value2':[11,12,13,14,15]}
df = pd.DataFrame(data)
df = df.drop_duplicates('Name',keep='last')
print(DataFrame)

Выход:

  Name  Value  Value2
2    C      3      13
3    A      4      14
4    B      5      15
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...