2016-08-13 9 views
1

:実際のケースにグループとパンダの各組み合わせの発生をカウント

data = pd.DataFrame({'user_id' : ['a1', 'a1', 'a1', 'a2','a2','a2','a3','a3','a3'], 'product_id' : ['p1','p1','p2','p1','p1','p1','p2','p2','p3']}) 

product_id user_id 
    p1  a1 
    p1  a1 
    p2  a1 
    p1  a2 
    p1  a2 
    p1  a2 
    p2  a3 
    p2  a3 
    p3  a3 

があるだけでなく、いくつかの他の列でもよいが、私は何をする必要があることにあるかもしれませんPRODUCT_IDとuser_idの列でデータフレームでグループや各組み合わせの数をカウントし、

出力は次のようなものでなければなりません新しいDATフレームに新しい列として追加:

user_id product_id count 
a1  p1   2 
a1  p2   1 
a2  p1   3 
a3  p2   2 
a3  p3   1 

私は次のコードを試してみました:

grouped=data.groupby(['user_id','product_id']).count() 

をしかし結果は次のとおりです。

user_id product_id 
a1  p1 
      p2 
a2  p1 
a3  p2 
      p3 

実際に私のために最も重要なことは、出現数を持つ列名の数を持つことで、私は必要後で列を使用する。

+0

[Pythonの:パンダのデータフレームに2列(変数)に基づいて、周波数カウントを取得]の可能複製(http://stackoverflow.com/questions/33271098/python-get-a-frequency-count- – Merlin

答えて

4

多分これはあなたが望むものですか?

>>> data = pd.DataFrame({'user_id' : ['a1', 'a1', 'a1', 'a2','a2','a2','a3','a3','a3'], 'product_id' : ['p1','p1','p2','p1','p1','p1','p2','p2','p3']}) 
>>> count_series = data.groupby(['user_id', 'product_id']).size() 
>>> count_series 
user_id product_id 
a1  p1   2 
     p2   1 
a2  p1   3 
a3  p2   2 
     p3   1 
dtype: int64 
>>> new_df = count_series.to_frame(name = 'size').reset_index() 
>>> new_df 
    user_id product_id size 
0  a1   p1  2 
1  a1   p2  1 
2  a2   p1  3 
3  a3   p2  2 
4  a3   p3  1 
>>> new_df['size'] 
0 2 
1 1 
2 3 
3 2 
4 1 
Name: size, dtype: int64 
+0

はい、非常に近いですが、どうすれば新しいデータフレームに入れることができますか?特に、そのサイズ番号を列名として「サイズ」にすることはできますか? – sanaz

+0

実際に私はRの背景を持っており、この作業はdplyrの要約とcount()を使って簡単に行うことができます – sanaz

+0

@サナズマ私は答えを更新しました。 –

関連する問題