找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2056|回复: 5

[求助] Python Pandas中的数据筛选问题,求大神赐教

2

主题

4

帖子

4

积分

贫民

积分
4
HaeJoo 发表于 2021-11-22 01:18:49 | 显示全部楼层 |阅读模式
比方说现在DF表中有一个类别字段’type‘,类别字段’type‘里有100多种类别
由于部分类别的数据量太少,我想清除掉,只留下df.type.value_count()大于100的数据
df.loc[df.type.value_count()>100]会出现报错:
IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).
查了很多相关的文章,但都解决不了问题
请问大神们怎么操作可以实现我上述的要求

回复

使用道具 举报

0

主题

36

帖子

36

积分

贫民

积分
36
Annadie 发表于 2021-11-22 14:39:45 | 显示全部楼层
本帖最后由 Annadie 于 2021-11-22 14:41 编辑

.value_count()是个统计值,不包含df 的index,也许无法使用df.loc,可以把原文件举例放出,结果要求放出来看看
dict(df['type'].value_counts()可以试试看



回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2021-11-23 19:49:30 | 显示全部楼层
temp=df['type'].value_counts()
target=temp[temp>100]
df[df['type'].isin(target.index)]
回复 支持 反对

使用道具 举报

2

主题

4

帖子

4

积分

贫民

积分
4
HaeJoo  楼主| 发表于 2021-11-27 15:32:54 | 显示全部楼层
sheeboard 发表于 2021-11-23 19:49
temp=df['type'].value_counts()
target=temp[temp>100]
df[df['type'].isin(target.index)]

我最后也是用这个方法实现的,但是在想还有没有一些更便捷的,比方说一行代码解决这种
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2021-11-27 20:38:51 | 显示全部楼层
本帖最后由 sheeboard 于 2021-11-27 20:45 编辑
HaeJoo 发表于 2021-11-27 15:32
我最后也是用这个方法实现的,但是在想还有没有一些更便捷的,比方说一行代码解决这种 ...

df.groupby('type').filter(lambda x: len(x)>100).type

不过这个速度没上面那个快。
参考连接 https://blog.softhints.com/panda ... ts-of-value_counts/
回复 支持 反对

使用道具 举报

2

主题

4

帖子

4

积分

贫民

积分
4
HaeJoo  楼主| 发表于 2021-11-30 19:01:18 | 显示全部楼层
sheeboard 发表于 2021-11-27 20:38
df.groupby('type').filter(lambda x: len(x)>100).type

不过这个速度没上面那个快。

感谢,学到了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表