Копировать данные из одного набора данных в другой на основе уникального идентификатора с помощью функции карты - PullRequest
0 голосов
/ 19 сентября 2019

Я сопоставляю два больших набора данных и пытаюсь выполнить операции обновления, удаления и создания исходного набора данных, сравнивая его с другим набором данных.Как я могу обновить 2 или 3 столбца из 10 исходного набора данных и сохранить значение другого столбца, как раньше?

Я попытался объединить, но безрезультатно.Слияние не работает для меня.

Исходные данные:

id | full_name   |   date
1  | John        |   02-23-2006
2  | Paul Elbert |   09-29-2001
3  | Donag       |   11-12-2013
4  | Tom Holland |   06-17-2016

другие данные:

id | full_name  |   date
1  | John       |   02-25-2018
2  | Paul       |   03-09-2001
3  | Donag      |   07-09-2017
4  | Tom        |   05-09-2016

После попытки я проверил вручную, я не сделаложидаемых результатов

original[['id']].merge(other[['id','date']],on='id')

Можно ли решить эту проблему с картой?При совпадении идентификатора обновите все значения в столбце даты, не изменяя значения в столбце имени исходного набора данных

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

Используйте pandas.Series.map :

df['date']=df['id'].map(other_df.set_index('id ')['date'])
print(df)

  id    full_name              date
0    1   John             02-25-2018
1    2   Paul Elbert      03-09-2001
2    3   Donag            07-09-2017
3    4   Tom Holland      05-09-2016

, чтобы проверить другие условия:

cond=df.status.str.contains('new')  
df.loc['date',cond]=df.loc['id',cond].map(other_df.set_index('id ')['date'])
0 голосов
/ 19 сентября 2019

Pandas 'DataFrame.update делает это, если вы правильно установили id в качестве индекса для original и other:

original.update(other[["date"]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...