2016-04-07 9 views
1

私はどのように多くの名前とそれらの間の重複に関連付けられているどのように多くのidの参照しようとしています。このピボットテーブル(?)パンダDATAFRAMEと

id name value 
a  Adam 5 
b  Eve  6 
c  Adam 4 
a  Eve  3 
d  Seth 2 
b  Adam 4 
a  Adam 2 

に似たものであるデータフレームを持っています。私はIDの列にgroupbyをして、どれくらいのidがどれくらい多くの名前を持っているのか分かりました。私は今、希望は何

df.groupby('id')['name'].nunique().value_counts() 

は名前が列名であるテーブルを取得する方法で、インデックスがIDであり、値は各idと名の合計です。私はforループのために、カラムがnameカラムの値であるDataFrameを初期化することでそれを行うことができましたが、これのような何かを達成するためのパンダの方法があるのでしょうか?

答えて

2

それはあなたが望むものですか?

In [54]: df.pivot_table(index='id', columns='name', values='value', aggfunc='sum') 
Out[54]: 
name Adam Eve Seth 
id 
a  7.0 3.0 NaN 
b  4.0 6.0 NaN 
c  4.0 NaN NaN 
d  NaN NaN 2.0 

またはNaNのなし

In [56]: df.pivot_table(index='id', columns='name', values='value', aggfunc='sum', fill_value=0) 
Out[56]: 
name Adam Eve Seth 
id 
a  7 3  0 
b  4 6  0 
c  4 0  0 
d  0 0  2 
+0

まさに私が欲しかったもの、ありがとう! – Linda

関連する問題