Retirar duplicatas de um arquivo CSV caso haja uma linha com a data mais recente

80 views
Skip to first unread message

Lucas Nascimento

unread,
Jan 11, 2022, 10:04:27 AM1/11/22
to Python Brasil
Tenho uma base de dados que tem vários comandos que deveriam ser únicos, porém corre o problema de as vezes serem duplicados, preciso identificar qual a data e hora mais recente e apenas considerar esse comando. Tô tentando algo com dict, alguém pode me dar uma luz? Segue abaixo a base de dados que criei pra teste Imagem transformei essa base em uma lista que tira os repetidos(caso haja) e cria uma com valores únicos: "timestamp;comando", porém preciso verificar se existem timestamps mais recentes e apagá-las
IMG.png
  1. with open(r'./input/exportSQL.csv', encoding='utf-8-sig') as exportSQLFile: listPowerCommandUnit = [] listPowerCommandUnitRepeated = [] for row in exportSQLFile: varTimeStamp = row.split(';')[0] varCommandUnitPathName = row.split(';')[11] varActorID = row.split(';')[12] if varTimeStamp == 'InTimeDbl' \ or varCommandUnitPathName == 'CommandUnitPathName' \ or varActorID == 'ActorID' \ or varActorID == 'ACT': pass else: if '{};{}'.format(varTimeStamp, varCommandUnitPathName) not in listPowerCommandUnit: listPowerCommandUnit.append('{};{}'.format(varTimeStamp, varCommandUnitPathName)) else: listPowerCommandUnitRepeated.append('{};{}'.format(varTimeStamp, varCommandUnitPathName)) sorted(listPowerCommandUnit) sorted(listPowerCommandUnitRepeated)

Marcelo Valle

unread,
Jan 11, 2022, 11:07:04 AM1/11/22
to Python Brasil
Assumindo que se `command_path` for o mesmo, o comando é duplicado, seria algo assim:

with open(r'./input/exportSQL.csv', encoding='utf-8-sig') as exportSQLFile:
commands = {}
for i, row in enumerate(exportSQLFile):
if i == 0: # Pula a primeira linha
continue
row_array = row.split(';')
row_dict = {
'time_stamp': row_array[0],
'command_path': row_array[11],
'actor_id': row_array[12],
}
if row_dict['command_path'] not in commands or commands[row_dict['command_path']]['time_stamp'] <= row_dict['time_stamp'] :
commands[row_dict['command_path']] = row_dict


--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/4f85162b-9659-43a6-baad-6bbc6b7087acn%40googlegroups.com.

Rodrigo Baron

unread,
Jan 12, 2022, 8:37:31 AM1/12/22
to Python Brasil
Você pode usar pandas DataFrame e usar drop_duplicates com a opção `keep='last'`.
Reply all
Reply to author
Forward
0 new messages