В python 3 и pandas у меня есть два кадра данных с одинаковыми столбцами
df_one.info()
<class 'pandas.core.frame.DataFrame'>
uf 8576 non-null object
cargo 8576 non-null object
sequencial 8576 non-null int64
numero_urna 8576 non-null object
nome_completo 8576 non-null object
nome_urna 8576 non-null object
cpf 8576 non-null object
e_mail 8576 non-null object
situacao_candidatura 8576 non-null object
df_two.info()
uf 102 non-null object
cargo 102 non-null object
sequencial 102 non-null int64
numero_urna 102 non-null object
nome_completo 102 non-null object
nome_urna 102 non-null object
cpf 102 non-null object
e_mail 102 non-null object
situacao_candidatura 102 non-null object
Фрейм данных df_one содержит историческую информацию о людях. Информация некоторых людей меняется со временем. Колонка "cpf" представляет собой идентификационный код
Датафрейм df_two меньше. Это файл, отправленный только с изменениями информации о людях. Также есть колонка "cpf"
Мне нужно обновить информацию "df_one", получив "df_two"
То есть все строки, которые имеют одинаковый "cpf" в обоих кадрах данных, должны быть обновлены - "df_one" должен иметь содержимое "df_two". Но другие строки должны оставаться такими же
Пожалуйста, кто-нибудь знает, как я могу это сделать?
Пример первых строк df_one:
{'uf': {0: 'AC', 1: 'AC', 2: 'AC', 3: 'AC', 4: 'AC'},
'cargo': {0: 'DEPUTADO FEDERAL',
1: 'DEPUTADO FEDERAL',
2: 'DEPUTADO FEDERAL',
3: 'DEPUTADO FEDERAL',
4: 'DEPUTADO FEDERAL'},
'sequencial': {0: 10000600207,
1: 10000602510,
2: 10000602299,
3: 10000608399,
4: 10000600222},
'numero_urna': {0: '1712', 1: '2222', 2: '1277', 3: '1331', 4: '1700'},
'nome_completo': {0: 'DANIELA PAIVA DE OLIVEIRA',
1: 'ANTÔNIA LUCILÉIA CRUZ RAMOS CÂMARA',
2: 'CLEIDE MARIA FERREIRA DE ARAUJO',
3: 'LEONARDO CUNHA DE BRITO',
4: 'MICHELA BATISTA LACERDA'},
'nome_urna': {0: 'DANIELA PAIVA',
1: 'ANTÔNIA LÚCIA',
2: 'CLEIDE ARAÚJO DA SAÚDE',
3: 'LEO DE BRITO',
4: 'MICHELA LACERDA'},
'cpf': {0: '52614174220',
1: '50791524272',
2: '30864372272',
3: '63182246291',
4: '51378353234'},
'e_mail': {0: 'PSL17.AC@GMAIL.COM',
1: 'ANTONIALUCIACAMARAPR22@GMAIL.COM',
2: 'PDTACRE12@GMAIL.COM',
3: 'LEODEBRITOACRE@GMAIL.COM',
4: 'PSL17.AC@GMAIL.COM'},
'situacao_candidatura': {0: 'AGUARDANDO JULGAMENTO',
1: 'AGUARDANDO JULGAMENTO',
2: 'AGUARDANDO JULGAMENTO',
3: 'AGUARDANDO JULGAMENTO',
4: 'AGUARDANDO JULGAMENTO'}}
Пример первых строк df_two:
{'uf': {0: 'AC', 1: 'AC', 2: 'AC', 3: 'AC', 4: 'AC'},
'cargo': {0: 'DEPUTADO FEDERAL',
1: 'DEPUTADO FEDERAL',
2: 'DEPUTADO FEDERAL',
3: 'DEPUTADO FEDERAL',
4: 'DEPUTADO FEDERAL'},
'sequencial': {0: 10000600207,
1: 10000602510,
2: 10000602299,
3: 10000608399,
4: 10000600222},
'numero_urna': {0: '1712', 1: '2222', 2: '1277', 3: '1331', 4: '1700'},
'nome_completo': {0: 'DANIELA PAIVA DE OLIVEIRA',
1: 'ANTÔNIA LUCILÉIA CRUZ RAMOS CÂMARA',
2: 'CLEIDE MARIA FERREIRA DE ARAUJO',
3: 'LEONARDO CUNHA DE BRITO',
4: 'MICHELA BATISTA LACERDA'},
'nome_urna': {0: 'DANIELA PAIVA',
1: 'ANTÔNIA LÚCIA',
2: 'CLEIDE ARAÚJO DA SAÚDE',
3: 'LEO DE BRITO',
4: 'MICHELA LACERDA'},
'cpf': {0: '52614174220',
1: '50791524272',
2: '30864372272',
3: '63182246291',
4: '51378353234'},
'e_mail': {0: 'PSL17.AC@GMAIL.COM',
1: 'ANTONIALUCIACAMARAPR22@GMAIL.COM',
2: 'PDTACRE12@GMAIL.COM',
3: 'LEODEBRITOACRE@GMAIL.COM',
4: 'PSL17.AC@hotmail.COM'},
'situacao_candidatura': {0: 'AGUARDANDO JULGAMENTO',
1: 'AGUARDANDO JULGAMENTO',
2: 'RENUNCIA',
3: 'AGUARDANDO JULGAMENTO',
4: 'CANCELADO'}}
- / -
Я выполнил следующие действия:
1 - я загрузил исторический фрейм данных df_one из 8576 строк
2 - Я загрузил информационный фрейм, отправленный обновлением, вчера 27, с 25 строками обновления, df_two
3 - df_one.update (df_two)
4 - я сохранил df_one как файл - df_currentversion.csv - я проверил и там было 25 новых строк
5 - Я загрузил обновленный кадр данных df_currentversion из 8 576 строк
6 - Я загрузил новый фрейм данных, отправленный обновлением, на сегодня 28, с 86 строками обновления, df_two
7 - df_currentversion.update (df_two)
8 - 86 строк были обновлены, но предыдущие 25, которые были обновлены, вернулись к тому, что они были в шаге 1