[英]Pandas groupby 2 coluns/conditions then value_counts() by another column?
这是我正在处理的数据集的样子:
类型 | 子类型 | 直辖市 |
---|---|---|
社交媒体 | 新城堡 | |
在地上 | 校园 | 梦露 |
在地上 | 咖啡店 | 库特尔斯基 |
社交媒体 | Instagram的 | 新城堡 |
社交媒体 | 抖音 | 圣安地列斯 |
社交媒体 | 新城堡 | |
社交媒体 | 圣安地列斯 |
我想按Type和SubType对它进行分组,然后按Municipality进一步过滤它,然后value_counts()
它。
这是我尝试过的:
ab = df.groupby([df['Type'] == 'Social Media',
df['SubType']])
ab['Municipality'].value_counts()
我几乎得到了我想要的,只是它显示了所有内容,而不仅仅是条件的结果(在“类型”列下,它有“真”和“假”部分。
这是我正在寻找的结果:
类型 | 子类型 | 直辖市 | |
---|---|---|---|
社交媒体 | 新城堡 | 2个 | |
圣安地列斯 | 1个 | ||
Instagram的 | 新城堡 | 1个 | |
抖音 | 圣安地列斯 | 1个 |
但相反,这是我的结果:
类型 | 子类型 | 直辖市 | |
---|---|---|---|
真的 | 新城堡 | 2个 | |
圣安地列斯 | 1个 | ||
Instagram的 | 新城堡 | 1个 | |
铁角 | 圣安地列斯 | 1个 | |
错误的 | 在地上 | 咖啡店 | 1个 |
校园 | 1个 | ||
等等... | .... | .... | ... |
只需先过滤并仅按子类型分组。 df.query('Type == `Social Media`').groupby('SubType')['Municipality'].value_counts()
我认为 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.