我确定这是一个基本问题,但是我无法在此处找到正确的路径。
让我们假设这样一个数据框,告诉每个人每周吃多少水果:
Name Fruit Amount
1 Jack Lemon 3
2 Mary Banana 6
3 Sophie Lemon 1
4 Sophie Cherry 10
5 Daniel Banana 2
6 Daniel Cherry 4
现在让我们假设我只想用创建一个条形图matplotlib
,以显示整个镇上每周吃的每种水果的总量。为此,我必须对水果进行分组
熊猫作者在他的书中groupby
将split-apply-combine
操作描述为第一部分:因此,首先,groupby将转换DataFrame
为DataFrameGroupBy
对象。然后,使用诸如的方法sum
,将结果组合到一个新的DataFrame
对象中。完美,我现在可以创建我的水果图。
但我面临的问题是,当我不希望发生的事情sum
,diff
或者在所有应用任何操作,每个组成员。当我只想使用一个水果类型仅groupby
保留DataFrame
一行时会发生什么(当然,对于像这样简单的示例,我可以只获取带有的水果列表unique
,但这不是重点)。
如果这样做,则返回的groupby
是一个DataFrameGroupBy
对象,而许多可使用的DataFrame
操作则不使用DataFrameGroupBy
。
我相信这个问题很容易避免,这让我很头疼。我如何DataFrame
在groupby
不应用任何聚合函数的情况下获得收益?是否有其他解决方法,甚至都没有使用groupby
,因为我在翻译中迷路了?
如果只需要一行,则可以使用groupby
-first()
+ reset_index
-的组合,它将保留每个组的第一行:
import pandas as pd
df = pd.DataFrame({'a': [1, 1, 2], 'b': [1, 2, 3]})
>>> df.groupby(df.a).first().reset_index()
a b
0 1 1
1 2 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句