Python / Pandas - 结合groupby mean和min

时间:2017-03-15 08:18:58

标签: python pandas group-by mean min

在数据框架上合并meanmin的语法是什么?我想按2列分组,计算col3组内的平均值,并保持min col4值。会像

groupeddf = nongrouped.groupby(['col1', 'col2', 'col3'], as_index=False).mean().min('col4')

工作?如果没有,那么正确的语法是什么?谢谢!

修改

好的,所以如果没有例子,这个问题就不是很清楚了。我现在就更新它。也改变了上面的文字。

我有:

ungrouped
col1 col2 col3 col4
1    2    3    4
1    2    4    1
2    4    2    1
2    4    1    3
2    3    1    3

通缉输出按列1-2分组,表示第3列(实际上是数据上的更多列,这是简化的)和col4的最小值:

grouped
col1 col2 col3 col4
1    2    3.5  1
2    4    1.5  1
2    3    1    3

1 个答案:

答案 0 :(得分:3)

我认为您需要先mean,然后mincol4

min_val = nongrouped.groupby(['col1', 'col2', 'col3'], as_index=False).mean()['col4'].min()

min的{​​{1}}:

Series

样品:

min_val = nongrouped.groupby(['col1', 'col2', 'col3'])['col4'].mean().min()

编辑:

您需要aggregate

nongrouped = pd.DataFrame({'col1':[1,1,3],
                   'col2':[1,1,6],
                   'col3':[1,1,9],
                   'col4':[1,3,5]})

print (nongrouped)
   col1  col2  col3  col4
0     1     1     1     1
1     1     1     1     3
2     3     6     9     5

print (nongrouped.groupby(['col1', 'col2', 'col3'])['col4'].mean())
1     1     1       2
3     6     9       5
Name: col4, dtype: int64

min_val = nongrouped.groupby(['col1', 'col2', 'col3'])['col4'].mean().min()
print (min_val)
2