pandas - 在 Pandas 中,按groupby选择值的groupby

  显示原文与译文双语对照的内容

我有一个如下所示的数据框架:


marker date value identifier

EA 2007-01-01 0.33 55
EA 2007-01-01 0.73 56
EA 2007-01-01 0.51 57
EA 2007-02-01 0.13 55
EA 2007-02-01 0.23 57
EA 2007-03-01 0.82 55
EA 2007-03-01 0.88 56
EB 2007-01-01 0.13 45
EB 2007-01-01 0.74 46
EB 2007-01-01 0.56 47
EB 2007-02-01 0.93 45
EB 2007-02-01 0.23 47
EB 2007-03-01 0.82 45
EB 2007-03-01 0.38 46
EB 2007-03-01 0.19 47

现在我想用值对这个数据帧进行选择,所以我使用


df.groupby(marker).get_group('EA')

但是我还想得到值的均值,注意我有一个重复的日期索引,所以现在我必须做两个 groupbys,因为索引是不同的,导致这一点。


df.groupby(marker).get_group('EA').groupby(df.groupby(marker).get_group('EA').index.date).mean()['value'].plot()

清晰清晰的东西。 如何在不创建中间变量的情况下完成这里操作?

时间: 原作者:

你不能,因为你在上面写的关于 AssertionError的评论。 Pandas 需要根据一些顺序来完成( 第二个) groupby,这些序列与 DataFrame 分组的长度完全相同。 如果你不愿意首先创建描述 EA 值的DataFrame,那么基本上就是在飞行时再次创建它。

它不仅不那么清晰,而且不必要的昂贵。 谈到这点,我将像这样重写你的代码:


eas = df[df.marker == 'EA']
eas.value.groupby(eas.date).mean().plot();

groupby 和保留单个组是根据键过滤的代价非常昂贵的方法。

原作者:
...