У меня есть датафрейм, и я хочу отбросить только для имени двойные даты и взять из двойников только первую запись или значение, если оно заполнено, например:
01/02/19 Paolo 42
01/02/19 Paolo 9
Первый сохранено: 01/02/19 Паоло 42.
01/02/19 Frank
01/02/19 Frank 30
Второе сохранено: 01.02.19 Фрэнк 30.
При использовании drop_duplicates удаляет почти все и содержит только небольшой набор.
Мой код выглядит следующим образом:
import numpy as np
import pandas as pd
path = 'path'
filename = 'Dummy_File_Test.xlsx'
final_path = path + '/' + filename
print(final_path)
ws_name = 'Sheet1'
df = pd.read_excel(final_path, sheet_name=ws_name)
df.fillna('', inplace=True)
df.drop_duplicates(subset =['Date'], keep = 'first', inplace = True, ignore_index=False)
print(df)
Данные выглядят следующим образом:
Date Name Revenue
01/01/19 Paolo 9
01/02/19 Paolo 42
01/02/19 Paolo 9
01/03/19 Paolo 10
01/04/19 Paolo 38
01/05/19 Paolo
01/06/19 Paolo
01/07/19 Paolo 41
01/08/19 Paolo
01/09/19 Paolo 20
01/10/19 Paolo
01/11/19 Paolo 3
01/12/19 Paolo 2
01/01/19 Frank 9
01/02/19 Frank
01/02/19 Frank 30
01/03/19 Frank 10
01/04/19 Frank
01/05/19 Frank
01/06/19 Frank
01/06/19 Frank
01/07/19 Frank
01/08/19 Frank
01/08/19 Frank
01/09/19 Frank
01/10/19 Frank
01/10/19 Frank 48
01/11/19 Frank 22
01/11/19 Frank
01/12/19 Frank 47
01/01/19 Emilia
01/02/19 Emilia 12
01/02/19 Emilia 15
01/03/19 Emilia 23
01/04/19 Emilia 25
01/05/19 Emilia
01/05/19 Emilia 39
01/06/19 Emilia 30
01/06/19 Emilia 24
01/07/19 Emilia 4
01/08/19 Emilia
01/08/19 Emilia 49
01/09/19 Emilia 24
01/10/19 Emilia
01/11/19 Emilia 12
01/12/19 Emilia 33
Вывод должен выглядеть следующим образом:
Date Name Revenue
01/01/19 Paolo 9
01/02/19 Paolo 42
01/03/19 Paolo 10
01/04/19 Paolo 38
01/05/19 Paolo
01/06/19 Paolo
01/07/19 Paolo 41
01/08/19 Paolo
01/09/19 Paolo 20
01/10/19 Paolo
01/11/19 Paolo 3
01/12/19 Paolo 2
01/01/19 Frank 9
01/02/19 Frank 30
01/03/19 Frank 10
01/04/19 Frank
01/05/19 Frank
01/06/19 Frank
01/07/19 Frank
01/08/19 Frank
01/09/19 Frank
01/10/19 Frank 48
01/11/19 Frank 22
01/12/19 Frank 47
01/01/19 Emilia
01/02/19 Emilia 12
01/03/19 Emilia 23
01/04/19 Emilia 25
01/05/19 Emilia 39
01/06/19 Emilia 30
01/07/19 Emilia 4
01/08/19 Emilia 49
01/09/19 Emilia 24
01/10/19 Emilia
01/11/19 Emilia 12
01/12/19 Emilia 33