2014-10-10 53 views
4

我想通過沿單個維度d1進行分組並彙總d1的每個元素的彙總統計信息來總結數據幀。特別是我對許多指標的前n個(指數和值)感興趣。 我想製作的是d1的每個元素的一行。大熊貓報告top-n組中的數據和關鍵點

說我有兩個尺寸D1,D2和4點度量M1,M2,M3,M4

1)什麼是由D1分組的所建議的方法,並尋找前n d2和量度值,對於每個的指標m1 - m4。

在韋斯的書的Python數據分析,他建議(第35頁)

def get_top1000(group): 
return group.sort_index(by='births', ascending=False)[:1000] 
grouped = names.groupby(['year', 'sex']) 
top1000 = grouped.apply(get_top1000) 

現在仍然是推薦的方式(我只關心說前5 D2出1000的和多指標) 2)現在接下來的問題是我想旋轉前5(即我對d1的每個元素都有一行)

因此生成的數據幀對於維度d1,d2和度量m1應如下所示: 索引d1和d2的前5個值的列和m1的對應值

D1 D2-1 D2-2 D2-3 D2-4 d2-5 M1-1 M1-2 M1-3 M1-4 M1-5

....

所以我轉動必須沿着d2創建排名(即1到5 - 這是我的列字段)。如果我總是有5個條目,這很容易,但偶爾有少於5個d2的元素對於給定的d1值。

所以可能有人建議如何添加排名來分組,讓我有正確的列索引進行旋轉

+0

你真的應該更好地說明你想要的格式。包括一些假數據和您的預期輸出 – 2014-10-10 23:05:40

回答

7

我沒有任何玩具的數據使用或預期結果進行比較,但我想你想要以下內容:

N = 1000 
names = my_fake_data_loader() 
grouped = names.groupby(['year', 'sex']) 
grouped.apply(lambda g: g.sort_index(by='births', ascending=False).head(N)) 

而這將給每組的前1000個元素。