2017-11-01 1 views
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 | 

내가 처음 두 열로 그룹에 원하는 형식의 dataframe이 있고, 당 카운트의 사전을 만들 원래 열을 그룹화하는 새로운 열로 변경하고 원래의 Count and Day 열을 버리십시오. 나는 내 결과처럼 보이게 할

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

I 프레임에 중복을 삭제 한 후 백작과 날 열을 삭제하고, 각 행에 열을 추가처럼 뭔가를 할 수 있지만이 추가 dateCounts를 얻기에 어려움을 겪고있어 열이 잘 작동합니다. 이 방법은 df.groupby(['Col1', 'Col2']).apply() 방법을 사용하여 가능합니까?

답변

2

사용 groupby + apply :

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 –

관련 문제