Как объединить кадры данных в конкретных ситуациях? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть два кадра данных, как показано ниже.

enter image description here

Я хочу объединить эти два кадра данных в следующем правиле.Во-первых, я хочу сосредоточиться на столбцах A, B, C и D. Если все эти значения одинаковы среди двух кадров данных, я хочу вычислить сумму значения.Также для столбца E я хочу оставить значение df1.Ожидаемый результат ниже цифры.

enter image description here

Если бы вы могли помочь, я был бы очень признателен.Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 07 июня 2018

concat + groupby + sort_values ​​

Один из способов - объединить ваши фреймы данных, выполнить операцию groupby, а затем отсортировать значения:

df1 = pd.DataFrame([[100, 'aaa', 'bbb', 'ccc', 'ddd', 1],
                    [50, 'eee', 'fff', 'ggg', 'hhh', 2],
                    [10, 'iii', 'jjj', 'kkk', 'lll', 3]],
                   columns=['Value', 'A', 'B', 'C', 'D', 'E'])

df2 = pd.DataFrame([[80, 'aaa', 'bbb', 'ccc', 'ddd', 4],
                    [60, 'ej', 'feuajo', 'eiwo', 'fuasdhf', 5],
                    [1, 'gheuha', 'daj;f', 'dfua', 'hfdusu', 6]],
                   columns=['Value', 'A', 'B', 'C', 'D', 'E'])

res = pd.concat([df1, df2], axis=0, ignore_index=True)\
        .groupby(['A', 'B', 'C', 'D'])\
        .agg({'Value': 'sum', 'E': 'first'})\
        .reset_index()\
        .sort_values('Value', ascending=False)

print(res)

        A       B     C        D  Value  E
0     aaa     bbb   ccc      ddd    180  1
2      ej  feuajo  eiwo  fuasdhf     60  5
1     eee     fff   ggg      hhh     50  2
4     iii     jjj   kkk      lll     10  3
3  gheuha   daj;f  dfua   hfdusu      1  6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...