В пандах, как обновить фрейм данных с другого, который меньше и с теми же характеристиками? - PullRequest
0 голосов
/ 28 августа 2018

В 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...