GroupBy - Python - PullRequest
       8

GroupBy - Python

0 голосов
/ 03 мая 2018

У меня есть такие данные,

     dayname          A         B              C           D         E

0     Friday        136.0      239.0          0.0        0.0      283.0   
1     Monday        305.0      431.0          0.0        0.0      845.0   
2   Saturday          0.0        3.0          0.0        0.0       11.0

Я хочу ОП:

 {
    'Friday' :[136, 239, 0, 283],
    'Monday' :[305, 431, 0, 845],
    'Saturday' :[0, 3, 0, 11]
 }

Вот код, который я пробовал,

output =  (pd.DataFrame(df).groupby(['dayname','areaName'])['avgCount'].sum().unstack(fill_value=0).rename_axis(None, 1).reset_index())
print(output)
ot = pd.DataFrame(output)
#ot contains the above mentioned data

Как этого добиться?

1 Ответ

0 голосов
/ 03 мая 2018

Мне кажется, нужно to_dict с l для list с:

df = df.set_index('dayname').T.to_dict('l')
print (d)
{'Friday': [136.0, 239.0, 0.0, 0.0, 283.0], 
 'Monday': [305.0, 431.0, 0.0, 0.0, 845.0], 
 'Saturday': [0.0, 3.0, 0.0, 0.0, 11.0]}

Если важен порядок, добавьте параметр into для OrderedDict:

from collections import OrderedDict
d = df.set_index('dayname').T.to_dict('l', into=OrderedDict)
print (d)
OrderedDict([('Friday', [136.0, 239.0, 0.0, 0.0, 283.0]), 
             ('Monday', [305.0, 431.0, 0.0, 0.0, 845.0]), 
             ('Saturday', [0.0, 3.0, 0.0, 0.0, 11.0])])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...