Отображение данных из одного кадра данных в другой на основе grouby - PullRequest
0 голосов
/ 18 сентября 2018

Возможно, подобный вопрос задавался и раньше, но я не смог найти никого, кто бы мог решить мою проблему.Может быть, я не использую правильные слова для поиска!1009 *

a2 = np.array([1,1,1,2,2,2,3,3,3])
b2 = np.array([1,2,3,1,2,3,1,2,3])
c = np.array([4,8,3,np.nan, 2, 5,6, np.nan, 1])

df2 = pd.DataFrame({'a':a2, 'b':b2, 'c': c})

a   b   c
0   1   1   4.0
1   1   2   8.0
2   1   3   3.0
3   2   1   NaN
4   2   2   2.0
5   2   3   5.0
6   3   1   6.0
7   3   2   NaN
8   3   3   1.0

Теперь я хочу отобразить столбец c из df2 в df1, но сохраняя группировку столбцов a = a1 и b = b2.Следовательно, df1 изменяется, как показано ниже

a   b  c
    0   1   1  4
    1   1   1  4
    2   1   2  8
    3   1   2  8
    4   1   3  3
    5   1   3  3
    6   2   1  NaN
    7   2   1  NaN
    8   2   2  2.0
    9   2   2  2.0
    10  2   3  5.0
    11  2   3  5.0
    12  3   1  6.0
    13  3   1  6.0
    14  3   2  NaN
    15  3   2  NaN
    16  3   3  1.0
    17  3   3  1.0

Как я могу добиться этого простым и интуитивно понятным способом, используя панд?

1 Ответ

0 голосов
/ 18 сентября 2018

Довольно просто, используя merge:

df1.merge(df2)

    a  b    c
0   1  1  4.0
1   1  1  4.0
2   1  2  8.0
3   1  2  8.0
4   1  3  3.0
5   1  3  3.0
6   2  1  NaN
7   2  1  NaN
8   2  2  2.0
9   2  2  2.0
10  2  3  5.0
11  2  3  5.0
12  3  1  6.0
13  3  1  6.0
14  3  2  NaN
15  3  2  NaN
16  3  3  1.0
17  3  3  1.0

Если у вас есть больше столбцов, и вы хотите специально объединить только на a и b, используйте:

df1.merge(df2, on=['a','b'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...