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

Cob*_*ain 2 python indexing dataframe pandas

我有一个超过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
...
Run Code Online (Sandbox Code Playgroud)

"GeographyCode"有207个唯一值,"犯罪类型"有12个唯一值.

我想创建一个包含207行和12列以及"GeographyCode"索引列的新数据框,每列代表一种犯罪类型,并包含GeographyCode中该犯罪类型的所有出现次数.

像这样的东西:

                Burglary   Anti-social    Theft   Shoplifting   etc...
GeographyCode
E01006687       1          3              9       5             ...
E01007229       1          3              2       1             ...
E01007230       0          6              12      5             ...
...
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*ley 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
Run Code Online (Sandbox Code Playgroud)