首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用pandas groupby对某些行进行降序排序,并对某些行进行升序排序

如何使用pandas groupby对某些行进行降序排序,并对某些行进行升序排序
EN

Stack Overflow用户
提问于 2018-06-07 06:51:49
回答 1查看 112关注 0票数 1

我有一个这样的DataFrame:

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame(
    [
              ["EUR"          , 0.031        , 61.170000 , "ask" ],
              ["EUR"          , 7.642        , 61.360000 , "ask" ],
              ["EUR"          , 0.266        , 61.370000 , "ask" ],
              ["EUR"          , 0.364        , 61.410000 , "ask" ],
              ["EUR"          , 0.101        , 61.100000 , "bid" ],
              ["EUR"          , 23.090       , 60.470000 , "bid" ],
              ["EUR"          , 2.061        , 60.460000 , "bid" ],
              ["EUR"          , 0.133        , 60.450000 , "bid" ],
              ["USD"          , 3.031        , 161.170000, "ask" ],
              ["USD"          , 10.642       , 161.360000, "ask" ],
              ["USD"          , 3.266        , 161.370000, "ask" ],
              ["USD"          , 3.364        , 161.410000, "ask" ],
              ["USD"          , 3.101        , 161.100000, "bid" ],
              ["USD"          , 26.090       , 160.470000, "bid" ],
              ["USD"          , 5.061        , 160.460000, "bid" ],
              ["USD"          , 3.133        , 160.450000, "bid" ],
    ],
    columns = ["base_currency", "base_volume", "price"  , "type"]
)
df

我想对这些行重新排序。具体地说,我希望将货币分组(所有“欧元”行在一起,所有“美元”行在一起),然后,对于每种货币,我希望“要求”按降序排序,“出价”按升序排序。现在,如果DataFrame只包含一种货币,我可以通过以下方式让它正常工作:

代码语言:javascript
复制
_df = df.groupby("type").apply(lambda row: row.sort_values(by = "price"))
_df

我必须处理多个货币,但当我尝试按以下方式对它们进行分组时

代码语言:javascript
复制
_df = df.groupby(["base_currency", "type"]).apply(
    lambda row:
        row.sort_values(by = "price") if row['type'] == 'ask' else\
        row.sort_values(by = "price", ascending = False),
    axis = 1
)
_df

我得到以下错误:

代码语言:javascript
复制
TypeError: <lambda>() got an unexpected keyword argument 'axis'

这里可能发生了什么?我怎么才能修复它?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50730702

复制
相关文章

相似问题

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