Pandas按2列/条件分组,然后按另一列分组value_counts()?

vc9ivgsu  于 2022-12-31  发布在  其他
关注(0)|答案(2)|浏览(125)

下面是我正在处理的数据集的样子:
| 类型|子类型|自治市|
| - ------| - ------| - ------|
| 社交媒体|脸书|纽卡斯尔|
| 地面|校园|门罗|
| 地面|咖啡馆|库特尔斯基|
| 社交媒体|图片分享|纽卡斯尔|
| 社交媒体|提克托克|圣安德烈亚斯|
| 社交媒体|脸书|纽卡斯尔|
| 社交媒体|脸书|圣安德烈亚斯|
我想按类型子类型对其进行分组,然后按市政当局对其进行进一步过滤,然后value_counts()它。
以下是我的尝试:

ab = df.groupby([df['Type'] == 'Social Media', 
                     df['SubType']])
ab['Municipality'].value_counts()

我几乎得到了我想要的,只是它显示了一切,而不仅仅是条件的结果(在类型列下,它有"真"和"假"部分。
这就是我想要的结果:
| 类型|子类型|自治市||
| - ------| - ------| - ------| - ------|
| 社交媒体|脸书|纽卡斯尔|第二章|
| | | 圣安德烈亚斯|1个|
| | 图片分享|纽卡斯尔|1个|
| | 抖音|圣安德烈亚斯|1个|
但是,这是我的结果:
| 类型|子类型|自治市||
| - ------| - ------| - ------| - ------|
| 真的|脸书|纽卡斯尔|第二章|
| | | 圣安德烈亚斯|1个|
| | 图片分享|纽卡斯尔|1个|
| | 蒂特科克|圣安德烈亚斯|1个|
| 假|地面|咖啡馆|1个|
| | | 校园|1个|
| 等等...| - -| - -| ...|

oug3syen

oug3syen1#

只需先过滤,然后仅按子类型分组。df.query('Type ==Social Media').groupby('SubType')['Municipality'].value_counts()

yvgpqqbh

yvgpqqbh2#

我认为value_counts就是您要查找的内容

df.value_counts(['Type','SubType','Municipality'])
Out[169]: 
Type          SubType    Municipality
Social Media  Facebook   New Castle      2
Onground      Cafe       Kutlski         1
              Campus     Monroe          1
Social Media  Facebook   San Andreas     1
              Instagram  New Castle      1

相关问题