在Python pandas数据帧中对唯一值进行分组和计数

时间:2015-11-16 10:04:59

标签: python pandas indexing dataframe

我有一个超过33,000行的数据框,我想简化:

                   Crime type
GeographyCode                              
E01006687          Burglary
E01007229          Anti-social behaviour
E01007229          Anti-social behaviour
E01007229          Anti-social behaviour
E01007229          Burglary
E01007229          Other theft
E01007229          Other theft
E01007229          Shoplifting
E01007229          Theft from the person
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
...

“地理编码”有207个独特的值。以及犯罪类型'。

的12个独特价值观

我想创建一个包含207行和12列以及“地理编码”的新数据框。 index列,每列代表一种犯罪类型,并包含GeographyCode中该犯罪类型的所有出现次数。

这样的事情:

                Burglary   Anti-social    Theft   Shoplifting   etc...
GeographyCode
E01006687       1          3              9       5             ...
E01007229       1          3              2       1             ...
E01007230       0          6              12      5             ...
...

我尝试过一些事情,但由于没有数字值,我发现很难得到我需要的东西。

1 个答案:

答案 0 :(得分:6)

您可以使用crosstab来计算:

>>> pd.crosstab(df.index, df['Crime type'])
Crime type      Anti-social behaviour  Burglary  Other theft  Shoplifting  ...

E01006687                           0         1            0            0
E01007229                           3         1            2            1
E01007230                           6         0            0            0