[英]groupby of a groupby to select values in pandas
我有一個數據框,如下所示:
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')
但是我也想獲取值的平均值,並注意我有一個重復的日期索引,所以現在我必須做兩個 groupby,因為索引不同,導致
df.groupby(marker).get_group('EA').groupby(df.groupby(marker).get_group('EA').index.date).mean()['value'].plot()
顯然不是很清楚。 如何在不創建中介變量的情況下完成此任務?
由於上面您在有關AssertionError
的評論中所寫的原因,您不能這樣做。 大熊貓期望做的(第二) groupby
根據其具有完全按相同的長度的一些序列DataFrame
得到分組。 如果您不願意首先創建一個描述EA
值的DataFrame
,則基本上可以隨時進行重新創建。
這不僅不那么清晰,而且不必要地昂貴。 說到這,我將像這樣重寫您的代碼:
eas = df[df.marker == 'EA']
eas.value.groupby(eas.date).mean().plot();
做一個groupby
和保持一個組是由密鑰只是過濾一個非常昂貴的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.