GroupBy-Python

GroupBy-Python,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有这样的数据 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

我有这样的数据

     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
我想要OP:

 {
    '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
如何实现这一点?

我认为需要使用
l
来为
列表
s:

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]}
如果订单重要,则将参数
添加到
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])])
我相信
l
需要
列表
s:

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]}
如果订单重要,则将参数
添加到
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])])

概述:我展示了如何使用列表选择字典项

dayname=['Friday','Monday','Saturday']
A=[136,305,0]
B=[239,431,3]
C=[0,0,0]
D=[0,0,0]
E=[283,845,11]
df=pd.DataFrame({'dayname':dayname,'A':A,'B':B,'C':C,'D':D})
df.set_index('dayname')
new_df=df.T
#l for list
#result=new_df.to_dict('l', into=OrderedDict)
result=df.set_index('dayname').T.to_dict('l')

for key,value in result.items():
   print (key)
   [print(item) for item in value]

概述:我展示了如何使用列表选择字典项

dayname=['Friday','Monday','Saturday']
A=[136,305,0]
B=[239,431,3]
C=[0,0,0]
D=[0,0,0]
E=[283,845,11]
df=pd.DataFrame({'dayname':dayname,'A':A,'B':B,'C':C,'D':D})
df.set_index('dayname')
new_df=df.T
#l for list
#result=new_df.to_dict('l', into=OrderedDict)
result=df.set_index('dayname').T.to_dict('l')

for key,value in result.items():
   print (key)
   [print(item) for item in value]

您是否需要
df.set_index('dayname').T.to_dict('l')
?是的,我需要这个。您是否需要
df.set_index('dayname').T.to_dict('l')
?是的,我需要这个。您为什么创建有序词典?你能说明迭代中的差异吗process@GoldenLion-是的,在旧的python版本中。在最新版本中,DICT是更改,所以不确定现在是否可用。(就像几年前一样)@GoldenLion-我使用了
ordedict
,因为在旧字典中没有声明键的顺序。orderedict([(0,['Friday',136,239,0,0]),(1,['Monday',305,431,0,0]),(2,['Saturday',0,3,0,0])展示了如何解析这些数据为什么要创建有序字典?你能说明迭代中的差异吗process@GoldenLion-是的,在旧的python版本中。在最新版本中,DICT是更改,所以不确定现在是否可用。(就像几年前一样)@GoldenLion-我使用了
ordedict
,因为在旧字典中并没有声明键的顺序。orderedict([(0,['Friday',136,239,0,0]),(1,['Monday',305,431,0,0]),(2,['Saturday',0,3,0,0])展示了如何解析这些数据