2017-03-15 4 views
0

私はBS4で住宅広告を掻き集め、パンダを使ってデータを分析しています。パンダグループは複数の列を意味し、単一の列を数えます

次のコマンド、

madrid_rooms_district=df.groupby('district', as_index=False)['rent','size house, m2', 'price per m2','deposit'].agg(['mean', 'size']) 

は、行ごとに区を持つテーブルを生成し、列ごと'rent','size house, m2', 'price per m2','deposit'ため地区の手段。それは私が必要なものです。

また、の1列あたりの広告数を表示する列があります。したがって、に'size'が必要です。ただし、コマンドの現在の設定では、の4つの列が表示され、各項目の1列は['rent','size house, m2', 'price per m2','deposit']になります。

「カウント」列の数を4つに減らすにはどうすればよいですか?

など。私は2つのデータフレームを作成することによって、異なっこれを解決しようとしてきた私は、

district | rent; mean | rent; size | size house, m2; mean | size house, m2; mean | ... 
    ----------------------------------------------------------------------------------- 
    A  | 300  |  2  |  100   |  2    | ... 
    B  | 400  |  6  |  200   |  6    | ... 
    C  | 500  |  3  |  120   |  3    | ... 

を持っていると私は必要、

district | rent; mean | size house, m2; mean | price per m2; mean | deposit; mean | count 
    --------------------------------------------------------------------------------------- 
    A  | 300  |  100   |  15   |  1  | 2 
    B  | 400  |  200   |  14   |  2  | 6 
    C  | 500  |  120   |  12   |  3  | 3 

。 1つは手段用で、もう1つはカウント用ですが、1つのDataFrameにマージすることはできませんでした。シリーズしようとしました、参加しようとした追加しようとした、試してみました...

答えて

0

簡単なオプションは、元のデータセットへのものの列を追加することであり、この列にSUM(「カウント」それを呼び出すことができます):

df['count'] = 1 
aggregator = {'rent' : 'mean', 
       'size house, m2' : 'mean', 
       'price per m2': 'mean', 
       'deposit' : 'mean', 
       'count': 'sum'} 
madrid_rooms_district = df.groupby('district', as_index=False)['rent','size house, m2', 'price per m2', 'deposit'].agg(aggregator) 
+0

素晴らしい!魅力のように動作します。ありがとうございました。 – LucSpan

+0

@ LucSpanこれは素晴らしいことでした。あなたがそれに満足している場合は、答えとしてマークしてください:) – Igor

関連する問題