как соединить два кадра данных с ключом и продублировать совпадающее значение для заполнения - PullRequest
0 голосов
/ 13 ноября 2018

как я могу объединить два фрейма данных по столбцу «ID» и заполнить пустые места соответствующими значениями. Поскольку это сложно объяснить, вот мой код, показывающий, что я хочу получить в результате.

import pandas as pd    
df = pd.DataFrame({'id': [1, 1, 1, 2, 2, 3, 4, 4, 4], 'col1': [3, 0, -1, 3.4, 4, 5, 6, 7, 8]})
df2 = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6, 7, 8, 9], 'col2': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']})

Теперь я хочу объединить эти два кадра данных с "id" и продублировать значения в col2, чтобы заполнить пустой столбец col2 после объединения.

пожалуйста, помогите мне. Спасибо

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

Вы ищете merge?

df.merge(df2, on='id')

    id  col1    col2
0   1   3.0     A
1   1   0.0     A
2   1   -1.0    A
3   2   3.4     B
4   2   4.0     B
5   3   5.0     C
6   4   6.0     D
7   4   7.0     D
8   4   8.0     D
0 голосов
/ 13 ноября 2018

Если вы внешне присоединитесь к ним:

df3 = pd.merge(df, df2, on='id', how='outer')

Тогда вы можете заменить NaN значения в col1 соответствующими значениями в col2:

df3.loc[df3.col1.isnull(), 'col1'] = df3.loc[df3.col1.isnull(), 'col2']
print(df3)

Выход:

    id col1 col2
0   1   3   A
1   1   0   A
2   1   -1  A
3   2   3.4 B
4   2   4   B
5   3   5   C
6   4   6   D
7   4   7   D
8   4   8   D
9   5   E   E
10  6   F   F
11  7   G   G
12  8   H   H
13  9   I   I
0 голосов
/ 13 ноября 2018

Я считаю, что вам нужно map:

df['col2'] = df['id'].map(df2.set_index('id')['col2'])

Или оставьте соединение с merge:

df = df.merge(df2, on='id', how='left')

print (df)
   id  col1 col2
0   1   3.0    A
1   1   0.0    A
2   1  -1.0    A
3   2   3.4    B
4   2   4.0    B
5   3   5.0    C
6   4   6.0    D
7   4   7.0    D
8   4   8.0    D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...