首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在熊猫中不使用石斑鱼和群食获得每个月的top5值

在熊猫中不使用石斑鱼和群食获得每个月的top5值
EN

Stack Overflow用户
提问于 2018-04-23 14:48:42
回答 2查看 599关注 0票数 0

我试图获取每个月的top5值以及文本列。我尝试过通过语句对和组进行重采样

数据集:

代码语言:javascript
运行
复制
text       amount      date
123…        11.00   11-05-17    
123abc…     10.00   11-08-17
Xyzzy…      22.00.  12-07-17
Xyzzy…      221.00.  11-08-17
Xyzzy…      212.00.  10-08-17
Xyzzy…      242.00.  18-08-17

代码:

代码语言:javascript
运行
复制
df1 = df.groupby([’text', pd.Grouper(key=‘date', freq='M')])[‘amount'].apply(lambda x: x.nlargest(5))

我得到一组文本,但没有按月或最大值按降序排序。

代码语言:javascript
运行
复制
df1 = df.groupby([pd.Grouper(key=‘date', freq='M')])[‘amount'].apply(lambda x: x.nlargest(5))

THis代码运行良好,但不提供text列。

EN

回答 2

Stack Overflow用户

发布于 2018-04-23 14:51:18

您可以将headsort_values结合使用

代码语言:javascript
运行
复制
df1 = df.sort_values('amount',ascending=False).groupby(['text', pd.Grouper(key='date', freq='M')]).head(2)
票数 2
EN

Stack Overflow用户

发布于 2018-04-23 14:52:34

假设amount是一个数字列:

代码语言:javascript
运行
复制
In [8]: df.groupby(['text', pd.Grouper(key='date', freq='M')]).apply(lambda x: x.nlargest(2, 'amount'))
Out[8]:
                         text  amount       date
text    date
123abc… 2017-11-30 1  123abc…    10.0 2017-11-08
123…    2017-11-30 0     123…    11.0 2017-11-05
Xyzzy…  2017-08-31 5   Xyzzy…   242.0 2017-08-18
        2017-10-31 4   Xyzzy…   212.0 2017-10-08
        2017-11-30 3   Xyzzy…   221.0 2017-11-08
        2017-12-31 2   Xyzzy…    22.0 2017-12-07
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49983957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档