我有一个运行的DataFrame:
df.groupby(by="mycol").agg({"colA": "sum", "colB": "count"})
但是,colA
并colB
需要存在。从聚合中创建新列的最“泛泛”的方法是什么?
编辑:
基本上,我有一组列,并且聚合不是1:1映射。因此,考虑一个示例,在该示例中,我希望将两列值的比率汇总为新列。现在考虑一下此类映射的字典。
我知道,在示例中,我可以过滤play
并计算分组数据的均值。但这不是问题的重点,因此请忽略此简单的解决方案,这只是简单示例的副作用。
>> df
outlook play temperature
0 sunny True 25
1 sunny True 25
2 overcast True 19
3 rain False 21
4 overcast False 33
5 rain False 27
6 rain False 22
7 overcast True 26
8 sunny True 13
9 sunny True 16
# should become:
>> df.groupby(by="outlook").agg(?)
play_mean_temp
sunny 19.75
overcast 22.50
rain NaN
在您的示例中,您可以使用:
print (df.groupby(by="outlook").apply(lambda x: x.ix[x.play, 'temperature'].mean()))
outlook
overcast 22.50
rain NaN
sunny 19.75
如果首先使用布尔索引,则将省略某些行:
print (df[df.play].groupby(by="outlook")['temperature'].mean())
outlook
overcast 22.50
sunny 19.75
Name: temperature, dtype: float64
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句