2017-04-20 85 views
1

設置熊貓:有條件的聚集平均數和中位數

我刮住房廣告中Scrapy和分析與大熊貓的結果。我構建了數據框,在位置上進行分組並聚合在幾個住房特徵(例如租金)上。


問題

我希望構造相同dataframes,即分組超過位置以及聚集在殼體的特點,但現在也聚集有條件。

也就是說,我有一個名爲type的每個房屋廣告的特徵,它是12。我想在地點上分組,並有條件地彙總住房特徵type12


代碼

group = ['borough','click district name for housing ads','district'] 
mdf['# for rent'] = 1 
aggregator = { 
     'median rent pw':'median', 
     'rent pw':'mean', 
     '# of roommates':'mean', 
     '# for rent':'sum', 
     } 

badf = mdf.groupby(group)['median rent pw','rent pw','# of roommates'].agg(aggregator)  

這是我工作的代碼,不有條件地聚集。

我在想我可以在兩個DataFrame中分割mdf - 每個type - 然後在兩個幀上運行代碼並將結果合併到一個表中。這似乎有點低效,但。

最好,我想代碼做這樣的事情:

aggregator = { 
     'median rent pw type 1 ':'median, conditionally on type = 1', 
     'median rent pw type 2 ':'median, conditionally on type = 2', 
     'median rent pw':'median', 
     'rent pw type 1':'mean, conditionally on type = 1', 
     'rent pw type 2':'mean, conditionally on type = 2', 
     'rent pw':'mean', 
     '# of roommates':'mean', 
     '# for rent':'sum', 
     } 

我怎麼去?

回答

1

如果我沒有記錯的話,我想你可以只包括typegroupby

group = ['type', 'borough','click district name for housing ads','district'] 
mdf['# for rent'] = 1 
aggregator = { 
     'median rent pw':'median', 
     'rent pw':'mean', 
     '# of roommates':'mean', 
     '# for rent':'sum', 
     } 

badf = mdf.groupby(group)['median rent pw','rent pw','# of roommates'].agg(aggregator)  

那麼你應該能夠得到在type == 1

badf.loc[1] 

或者

badf.xs(1) 
+0

我會被詛咒的。謝謝!順便說一句,看起來''badf.loc [1]'和'badf.xs(1)'工作。 – LucSpan