微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用pandas从列值计数中获取顶行

假设我有这种数据.这是对一些产品的一系列评论.

prod_id text    rating
AB123   some text   5
AB123   some text   2
AB123   some text   4
AC456   some text   3
AC456   some text   2
AD777   some text   2
AD777   some text   5
AD777   some text   5
AD777   some text   4
AE999   some text   4
AF000   some text   5
AG222   some text   5
AG222   some text   3
AG222   some text   3

我想知道哪个产品评论最多(行数最多),所以我使用以下代码来获得前3个产品(我只需要3个评价最多的产品).

s = df['prod_id'].value_counts().sort_values(ascending=False).head(3)

然后我会得到这个结果.

AD777   4
AB123   3
AG222   3

但我真正需要的是具有上述ID的行.我需要所有AD777,AB123和AG222的整行,如下所示.

product_id  text    rating
AD777   some text   2
AD777   some text   5
AD777   some text   5
AD777   some text   4
AB123   some text   5
AB123   some text   2
AB123   some text   4
AG222   some text   5
AG222   some text   3
AG222   some text   3

我怎么做?我尝试了打印(df.iloc [s]),但当然它不起作用.正如我在文档中看到的那样,value_counts返回系列而不是数据帧.任何的想法?谢谢

解决方法:

我认为你需要merge与左连接与创建索引为s的DataFrame:

df = pd.DataFrame({'prod_id':s.index}).merge(df, how='left')
print (df)
  prod_id       text  rating
0   AD777  some text       2
1   AD777  some text       5
2   AD777  some text       5
3   AD777  some text       4
4   AB123  some text       5
5   AB123  some text       2
6   AB123  some text       4
7   AG222  some text       5
8   AG222  some text       3
9   AG222  some text       3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐