2017-11-01 8 views
2

としてマップに結果を入れて、私は最初の2列でグループ化したいフォーマットのデータフレームパンダ複数の列でグループ化し、新しい列

|Col1|Col2|Count|Day | 
|----|----|-----|-----| 
| A | C | 1 | Mon | 
| A | C | 3 | Tue | 
| A | C | 5 | Wed | 
| A | D | 7 | Mon | 
| B | C | 2 | Mon | 
| B | D | 4 | Tue | 

を持っている、とカウントあたりの辞書を作成元の列をグループ化する新しい列として、元のCountとDay列を破棄します。私は私の結果は、私は、それぞれの行に列を追加するような何かをカウントし、デイ列を削除して、フレームに重複をドロップすることができ

|Col1|Col2|dateCounts     | 
|----|----|-----------------------------| 
| A | C |{"Mon":1, "Tue": 3, "Wed": 5}| 
| A | D |{"Mon":7}     | 
| B | C |{"Mon":2}     | 
| B | D |{"Tue":4}     | 

に見えるようにしたいが、私は、余分なdateCountsを得ることに苦労しています列はうまく動作します。これはdf.groupby(['Col1', 'Col2']).apply()メソッドを使用して可能ですか?

答えて

2

使用+ applygroupby

df.groupby(['Col1', 'Col2'])\ 
    .apply(lambda x: dict(zip(x.Day, x.Count))).reset_index(name='dateCounts') 

    Col1 Col2      dateCounts 
0 A C {'Wed': 5, 'Tue': 3, 'Mon': 1} 
1 A D      {'Mon': 7} 
2 B C      {'Mon': 2} 
3 B D      {'Tue': 4} 
+0

ああ、私はこのような何かを持っていたが、私は完璧な 'zip'を、行方不明になりました! – TheHCA

+0

@TheHCA問題ありません!また、15人の担当者におめでとう、あなたは今投票の答えをアップすることができます;-) –

+1

偉大な答え。 +1 –

関連する問題