#python #pandas #dataframe #numpy #merge
Вопрос:
У меня есть два кадра данных, которые я хотел бы объединить в » ID » и «updated_date». Единственное различие между ними заключается в том, что столбец «other_date» в df1 содержит пару NaT, а df2 содержит столбец «тип».
Идентификатор, подобный результирующему df, чтобы иметь NaN для всех объединяющихся строк, в которых изначально был NaT (строка № 3)
ID | updated_date | other_date |
0 11 | 2019-04-03 | 2019-04-09 |
1 11 | 2019-05-02 | 2019-05-14 |
2 11 | 2019-05-20 | 2019-06-05 |
3 11 | 2019-03-03 | NaT |
ID | updated_date | other_date | type |
0 11 | 2019-04-03 | 2019-04-09 | C |
1 11 | 2019-05-02 | 2019-05-14 | C |
2 11 | 2019-05-20 | 2019-06-05 | D |
3 11 | 2019-03-03 | 2019-03-04 | C |
Желаемый результат:
ID | updated_date | other_date | type |
0 11 | 2019-04-03 | 2019-04-09 | C |
1 11 | 2019-05-02 | 2019-05-14 | C |
2 11 | 2019-05-20 | 2019-06-05 | D |
3 11 | 2019-03-03 | NaT | NaN |
Ответ №1:
Может быть, попробовать левое соединение с тремя столбцами ID, updated_date и other_date?
df1.merge(df2, how = "left", on = ["ID", "updated_date", "other_date"])
Вывод
ID | дата обновления | другая дата | Тип | |
---|---|---|---|---|
0 | 11 | 2019-04-03 | 2019-04-09 | C |
1 | 11 | 2019-05-02 | 2019-05-14 | C |
2 | 11 | 2019-05-20 | 2019-06-05 | D |
3 | 11 | 2019-03-03 | натуральный | NaN |
Ответ №2:
Функция использования include(column)
и добавления это поможет вам сделать список похожим, а затем использовать if(condition )
его в последней ячейке для печати NaN
.