2017-07-27 5 views
0

私はデータフレームdfを持っています。行列Mの座標を示す2列で構成されます。Python:パンダのデータフレームで繰り返されるカップルの値の数を数える方法は?

for i in df.index: 
    M[df['x'][i]][df['y'][i]] += 1 

df 

     x  y 
0  1  4  
1  0  2  
3  3  1  
4  4  2  
5  4  2  
4  2  0  

私は何をやっていることは、次の私は

今私は、同じセルがデータフレームで呼び出されたか回カウントする追加したい
s = [5, 5] 
M = np.zeros((s[1], s[0])) 

としてマトリックスMを定義しています

パンダのデータフレームをグループ化するよりエレガントな方法でやりたいと思います。

ので、夫婦xyが繰り返される回数をカウントデータフレームdf1、生成する必要があります出力:

 x  y count 
0  1  4 1 
1  0  2 1 
3  3  1 1 
4  4  2 2 
5  2  0 1 

DF1と行列を M

M 

array([[ 0., 0., 1.0, 0., 0.], 
     [ 0., 0., 0., 1.0, 0.], 
     [ 1.0, 0., 0., 0., 0.], 
     [ 0., 1., 0., 0., 0.], 
     [ 0., 0., 2., 0., 0.]]) 
+4

あなたの質問のタイトルは内容と一致していません。修正してください。 –

+0

希望の出力を追加することはできますか? – FLab

+0

[pandasデータフレームのすべてのユニークな行数を取得](https://stackoverflow.com/questions/34255882/get-count-of-all-unique-rows-in-pandas-dataframe)の可能な複製 –

答えて

0

あなたができました欠けている値をカバーするために、次のようなやり直し軸を実行してください:

M = (df.groupby(['x','y'])['x'] 
     .count() 
     .unstack() 
     .reindex(index=np.arange(df.x.max()+1), 
       columns=np.arange(df.y.max()+1)) 
     .fillna(0) 
     .values) 

出力:

[[ 0. 0. 1. 0. 0.] 
[ 0. 0. 0. 0. 1.] 
[ 1. 0. 0. 0. 0.] 
[ 0. 1. 0. 0. 0.] 
[ 0. 0. 2. 0. 0.]] 
関連する問題