[英]How to create a DataFrame of the mean of an inner level of a pandas DataFrame multi-column index with identical names?
因此,假設我有一個如下兩級的熊貓DataFrame,在多索引中,簇為0級,子簇為1級:
Cluster 1 2 3
subcluster 1 1 2 1 2 2 1 2 3
A 11 12 13 13 20 21 16 127 18
B 14 15 16 14 19 22 16 027 19
C 17 18 19 15 18 23 16 71 12
D 20 21 22 16 17 24 16 71 30
我想做的是創建一個由每個子集群的平均值組成的DataFrame。 請注意,由於數據集的命名方式,某些子群集的名稱相同(例如,群集1和2各自具有兩個不同的子群集,如上所示。我的實際數據集更大,有15個不同的群集,最大29個子集群,總計約40 000列。
使用df.groupby(level=1, axis=1).mean()
不起作用,因為它無法區分集群1子集群1和集群2子集群1,例如,我想這樣做。 換句話說,它將創建一個僅具有3列的Mean的DataFrame,每個子集群對應一列,而我想對其進行限制以找到其集群中每個子集群的均值。 據我所知,使用df[1].groupby(level=0, axis=1).mean()
完成此工作,但這意味着我必須對15個集群中的每個集群進行處理,然后將所有他們最終到我想要的地方。
我的問題是,是否有一種更快,更優雅的方法。 同樣,最好是一種保留有關起源集群的信息的方式。 我的操作方式沒有顯示主群集,這意味着我必須在串聯之前將其手動添加到每個DataFrame中。
希望我的問題清楚。
將mean
與兩個級別一起使用:
df1 = df.mean(axis=1, level=[0,1])
就像這樣:
df1 = df.groupby(level=[0,1], axis=1).mean()
print (df1)
Cluster 1 2 3
1 2 1 2 1 2 3
A 11.5 13.0 13.0 20.5 16.0 127.0 18.0
B 14.5 16.0 14.0 20.5 16.0 27.0 19.0
C 17.5 19.0 15.0 20.5 16.0 71.0 12.0
D 20.5 22.0 16.0 20.5 16.0 71.0 30.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.