使用python在Dataframe中对项目进行分组

时间:2017-10-27 20:47:37

标签: python pandas dataframe group-by

我在python中有一个数据框,其中包含以下字段:

id      date            cost    
A       2017-01-17      19
A       2017-01-17      22
A       2017-03-29      19
A       2017-03-29      10
B       2017-03-16      25

是否可以在两列iddate上对数据框进行分组,然后根据分组获取最大值和分钟cost

id      date            max(cost)   min(cost)   
A       2017-01-17      22           19
A       2017-03-29      19           10
B       2017-03-16      25           25 

2 个答案:

答案 0 :(得分:1)

使用groupby + agg

df.groupby(['id', 'date']).cost\
      .agg([('cost(max)', 'max'), ('cost(min)', 'min')]).reset_index()

  id        date  cost(max)  cost(min)
0  A  2017-01-17         22         19
1  A  2017-03-29         19         10
2  B  2017-03-16         25         25

答案 1 :(得分:1)

d={'max(cost)':'max','min(cost)':'min'}
df.groupby(['id', 'date'],as_index=False).cost.agg(d)
Out[1017]: 
  id        date  max(cost)  min(cost)
0  A  2017-01-17         22         19
1  A  2017-03-29         19         10
2  B  2017-03-16         25         25

或使用apply

df.groupby(['id', 'date'],as_index=False).cost.apply(lambda x : pd.Series([min(x),max(x)],index=['min(cost)','max(cost)']))
Out[1021]: 
               min(cost)  max(cost)
id date                            
A  2017-01-17         19         22
   2017-03-29         10         19
B  2017-03-16         25         25