Pandas Python dict,元组索引为缩进dict

Pandas Python dict,元组索引为缩进dict,pandas,dataframe,dictionary,pandas-groupby,multi-index,Pandas,Dataframe,Dictionary,Pandas Groupby,Multi Index,我正在分析facebook上的一段对话,我想知道每个人每天每小时发送多少条信息。使用Pandas,我做了数据['n_msg_by_hour']=df.groupby(['author',df['date'].dt.hour])[''u id'].count()。返回的序列对象具有以下所需表单: Djézeune 0 4866 1 4549 2 4463

我正在分析facebook上的一段对话,我想知道每个人每天每小时发送多少条信息。使用Pandas,我做了
数据['n_msg_by_hour']=df.groupby(['author',df['date'].dt.hour])[''u id'].count()
。返回的序列对象具有以下所需表单:

Djézeune        0       4866
                1       4549
                2       4463
                3       3841
                4       2560
                5       1029
                6        396
                7        239
                8         76
                9         56
                10        40
                11        88
                12       340
                13       685
                14      1253
                15      1712
                16      2224
                17      2650
                18      2439
                19      2951
                20      3347
                21      3575
                22      4696
                23      4741
Vinssan         0        108
                1        129
                2         84
                3         72
                4          8
                5         17
                6          4
                7          1
                8          1
                9          1
                11         4
                12        26
                13        37
                14        81
                15       114
                16        92
                17       123
                18        83
                19        95
                20        58
                21       112
                22        87
                23       109
Name: _id, dtype: int64
但是,当我执行
数据['n_msg_by_hour']]时,对于dict()
我有一个以元组作为键的dict,如下所示:

{
('Djézeune', 0):4866,
('Djézeune', 1):4549,
('Djézeune', 10):40,
('Djézeune', 11):88,
('Djézeune', 12):340,
('Djézeune', 13):685,
('Djézeune', 14):1253,
...
('Vinssan', 0):108,
('Vinssan', 1):129,
('Vinssan', 10):0,
('Vinssan', 11):4,
('Vinssan', 12):26,
('Vinssan', 13):37,
('Vinssan', 14):81,
}
{_id : 5d9e716e5a20777bdb1b22f5,
author : "Djézeune",
timestamp : 1568670904454,
date : 2019-09-16T17:55:04.000+00:00,
type : "Generic",
content : "Hello"}
但我希望有一个缩进的dict,然后将其放在json中

{
'Djézeune':{0:4866, 1:4549, 10:40, 11:88, 12:340, 13:685, 14:1253 ...},
'Vinssan':{0:108, 1:129, 10:0, 11:4, 12:26, 13:37, 14:81 ...}
}
使用
groupby
level
选项或
pandas
中的函数(如
multi-index
)是否有一种简单的方法来完成此操作,而不是重复我的dict键

我的数据框中的每一行如下所示:

{
('Djézeune', 0):4866,
('Djézeune', 1):4549,
('Djézeune', 10):40,
('Djézeune', 11):88,
('Djézeune', 12):340,
('Djézeune', 13):685,
('Djézeune', 14):1253,
...
('Vinssan', 0):108,
('Vinssan', 1):129,
('Vinssan', 10):0,
('Vinssan', 11):4,
('Vinssan', 12):26,
('Vinssan', 13):37,
('Vinssan', 14):81,
}
{_id : 5d9e716e5a20777bdb1b22f5,
author : "Djézeune",
timestamp : 1568670904454,
date : 2019-09-16T17:55:04.000+00:00,
type : "Generic",
content : "Hello"}

通过按索引的第一级分组并迭代生成的
系列
es,可能最容易实现:

In [320]: s = pd.Series(np.random.random(48), index=pd.MultiIndex.from_product([["DJ", "Vin"], range(24)]))

In [321]: d = {k: v.droplevel(0).to_dict() for k, v in s.groupby(level=0)}

In [322]: d
Out[322]:
{'DJ': {0: 0.8731657595223525,
  1: 0.6806768452816228,
  2: 0.6376297431476246,
  ...
  23: 0.9995968607512785},
 'Vin': {0: 0.19255930821536904,
  1: 0.944802244484905,
  2: 0.1171672201795304,
  ...
  23: 0.7387196132363647}}