从数据帧创建一个频率字典



我有一个像这样的大数据集,我正在尝试制作一个数据帧字典的字典,以组织"犯罪"列和其他列的频率。

列车数据

    23  Wednesday  BAYVIEW  CENTRAL  INGLESIDE  NORTHERN  PARK  RICHMOND  crime
0   1          1        0        0          0         1     0         0      3
1   1          1        0        0          0         1     0         0      1
2   1          1        0        0          0         1     0         0      1
3   1          1        0        0          0         1     0         0      0
4   1          1        0        0          0         0     1         0      0
5   1          1        0        0          1         0     0         0      0
6   1          1        0        0          1         0     0         0      2
7   1          1        1        0          0         0     0         0      2
8   1          1        0        0          0         0     0         1      0
9   1          1        0        1          0         0     0         0      0

因此,我决定首先按数据帧分组,列为"犯罪":

train_data=train_data.groupby(['crime']).sum()

       23  Wednesday  BAYVIEW  CENTRAL  INGLESIDE  NORTHERN  PARK  RICHMOND
crime                                                                      
0       5          5        0        1          1         1     1         1
1       2          2        0        0          0         2     0         0
2       2          2        1        0          1         0     0         0
3       1          1        0        0          0         1     0         0

然后我试着把它们组织在一本字典里,但我做不到,我也试着在某些方面迭代,但数据帧有问题。

结果应该是这样的:

{0: {23: 5, Wednesday: 1, BAYVIEW: 0, CENTRAL: 1, ...}, 
 1: {23: 2, Wednesday: 2, BAYVIEW: 0, ...},
 2: {...}, 3: {...}}

您可以使用

d = train_data.to_dict(orient='index')

请参阅http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.DataFrame.to_dict.html了解更多选项。

如果你在熊猫身上,MaxNoe发布的0.17.0或更高版本:

train_data.groupby('crime').sum().to_dict(orient='index')

否则:

train_data.groupby('crime').sum().T.to_dict()

最新更新