如何按两列分组使用pandas

时间:2018-05-09 19:07:55

标签: python pandas dataframe group-by pandas-groupby

我有3列 - _a,_b,_c。

import numpy as np 
import pandas as pd
df = pd.DataFrame({'_a':[1,1,1,2,2,3,3],'_b':[3,3,5,3,7,3,9], '_c':[10,11,12,13,14,15,16], 'a_b_3:[21,21,21,13,13,15,15]'})
df

    _a  _b  _c  a_b_3   
0   1   3   10   21
1   1   3   11   21
2   1   5   12   21
3   2   3   13   13
4   2   7   14   13
5   3   3   15   15
6   3   9   16   15

我需要创建列a_b_3(_b = 3的所有值_c由_a加起来)使用来自pandas的groupby。提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用:

df['a_b_3'] = df['_a'].map(df[df['_b'] == 3].groupby('_a')['_c'].sum())

输出:

   _a  _b  _c  a_b_3
0   1   3  10     21
1   1   3  11     21
2   1   5  12     21
3   2   3  13     13
4   2   7  14     13
5   3   3  15     15
6   3   9  16     15

<强> 解释

首先过滤到只有_b等于3的记录,然后按_a和sum分组以创建一个系列。使用该系列映射回原始数据框中的_a值。