Как объединить кадры данных pandas по двум ключам с помощью приоритетного ключа? - PullRequest
0 голосов
/ 16 января 2019

Как я могу слева соединить два кадра данных панд (df1, df2) на двух ключах (bla1, bla2), где ключ bla2 должен использоваться, когда он не равен нулю (см. Последние два строки в df1)?

Псевдо-код

если bla2 не равно нулю, тогда присоединяйтесь bla к bla2

еще присоединиться bla на bla1

Dataframes

df1

| bla1 | bla2 | a   | b   |
|------|------|-----|-----|
| 1    |      | ... | ... |
| 2    |      | ... | ... |
| 3    |      | ... | ... |
| 4    | 7    | ... | ... |
| 5    | 8    | ... | ... |

+ df2

| bla | x   | y   | z   |
|-----|-----|-----|-----|
| 1   | ... | ... | ... |
| 2   | ... | ... | ... |
| 3   | ... | ... | ... |
| 7   | ... | ... | ... |
| 8   | ... | ... | ... |

= df3

| bla1 | bla2 | a   | b   | x   | y   | z   |
|------|------|-----|-----|-----|-----|-----|
| 1    |      | ... | ... | ... | ... | ... |
| 2    |      | ... | ... | ... | ... | ... |
| 3    |      | ... | ... | ... | ... | ... |
| 5    | 7    | ... | ... | ... | ... | ... |
| 4    | 8    | ... | ... | ... | ... | ... |

1 Ответ

0 голосов
/ 16 января 2019

[Сначала создайте новый столбец, чтобы объединить оба столбца.

df1["new_column"] = df1.bla2.fillna(df1.bla1);

Затем объедините оба фрейма и удалите дополнительные созданные столбцы.

df3 = pd.merge(df1, df2, how="inner", left_on="new_column", right_on="bla").drop(["new_column", "bla"], axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...