добавить две колонки с групповым - PullRequest
0 голосов
/ 03 апреля 2019

Как я могу добавить два столбца после группировки по ключу из другого столбца,

, например, у меня есть следующая таблица:

+------+------+------+
| Col1 | Val1 | Val2 |  
+------+------+------+
|    1 |    3 |    3 |  
|    1 |    4 |    2 |  
|    1 |    2 |    1 |  
|    2 |    2 |    0 |  
|    2 |    3 |    0 |  
|    3 |    2 |    9 |  
|    3 |    2 |    8 |  
|    4 |    2 |    1 |  
|    5 |    1 |    1 |  
+------+------+------+

, чего я хочу достичь, это

+------+----------------------+
| Col1 | Sum of Val1 and Val2 |
+------+----------------------+
|    1 |                15    | 
|    2 |                 5    | 
|    3 |                21    | 
|    4 |                 3    | 
|    5 |                 2    | 
+------+----------------------+

Я могу получить сумму столбцов, группирующих Col1, Col1 и затем добавить их результаты, но я создаю несколько столбцов в процессе.

import pandas as pd

data =[[1,3,3],[1,4,2],[1,2,1],[2,2,0],[2,3,0],[3,2,9],[3,2,8],
          [4,2,1],[5,1,1]]
mydf = pd.DataFrame(data, columns = ['Col1','Val1','Val2'])

print(mydf)
mydf['total1'] = mydf.groupby('Col1')['Val1'].transform('sum')
mydf['total2'] = mydf.groupby('Col1')['Val2'].transform('sum')
mydf['Sum of Val1 and Val2'] = mydf['total1'] + mydf['total2']
mydf = mydf.drop_duplicates('Col1')
print(mydf[['Col1', 'Sum of Val1 and Val2' ]])

есть более короткий способ иметь дело сэто?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019
mydf.groupby('Col1').sum().sum(axis=1)
0 голосов
/ 03 апреля 2019

Используйте следующее:

mydf['Sum of Val1 and Val2'] = mydf['Val1'] + mydf['Val2']

df = mydf.groupby('Col1')['Sum of Val1 and Val2'].sum().reset_index()

print(df)

   Col1  Sum of Val1 and Val2
0     1                    15
1     2                     5
2     3                    21
3     4                     3
4     5                     2
...