2017-11-15 8 views
0

私は次のようにパンダのデータフレームを持っている:取得正しいカウント

Name | Attended 
Smith | Y 
Smith | Y 
Smith | N 
Adams | N 
Adams | Y 
Morgan | Y 
Morgan | Y 

と私はそれぞれの名前のためのYさんとNSの数をカウントしたいと思います。 ので、出力は次のようになります。

Name | Attended| Count 
Smith | Y  | 2 
     | N  | 1 
Adams | Y  | 1 
     | N  | 1 
Morgan| Y  | 3 
     | N  | 0 

私はdf.groupby(["Name","Attended"]).count()、それのバリエーションを試してみましたが、何らかの理由で私は右の出力を得ることはありません。名前と単純にカウント(Smith 3、Adam 2、Morgan 3)または同じデータフレームを再度取得します。助けて!間違ってグループ分けしていますか?私は似たような質問をしばらく見て、私のコードはそこの答えと一致します。

私はPython 3とjupyterノートを使用しています。

答えて

3

ポイントアウト

df.groupby(["Name ","Attended"])["Attended"].count().to_frame(name='Count') 
Out[842]: 
        Count 
Name  Attended  
Adams N    1 
     Y    1 
Morgan Y    2 
Smith N    1 
     Y    2 
+0

感謝を取得してcountの列!フォローアップの質問:別の列で合計集計を行いたい場合は、NameとAttendedでグループ化することもできます。一度に両方を行う方法はありますか? I.私が "Points"という列を持っていれば、各人のポイントを各YとNごとに合計したいと思っていました。 –

+0

@ L.Chu 'agg'https://pandas.pydata .org/pandas-docs/stable/generated/pandas.core.groupby.DataFrameGroupBy.agg.html – Wen

2

、または各グループのサイズ

df = df.groupby(['Name', 'Attended']).size().to_frame(name = 'Count') 


       Count 
Name Attended  
Adams N  1 
     Y  1 
Morgan Y  2 
Smith N  1 
     Y  2 
関連する問題