V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yellowtail
V2EX  ›  问与答

pandas 排序问题求教

  •  
  •   yellowtail · 2020-01-23 17:29:21 +08:00 · 1442 次点击
    这是一个创建于 1544 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如何在按另一列值的大小调整多组(每组数量不一样)列值相同的行的排序

    比如,每天对 abcdef 等 3000 人量体重,连续 100 天,然后去除异常值(最后效果就是 a 可能测量了 100 次,b 只有 90 次,所以每组数量不一样)。最后筛选出有体重逐日增加超过 10 天记录的人

    dataframe 类似如下

    0 名字 体重 日期

    1 a 100.00 1-1

    2 b 110.00 1-1

    3 c 120.00 1-1

    4 a 101.00 1-2

    5 b 111.00 1-2

    ...

    最笨的解法我觉得是

    1 先 for 出 3000 个 dataframe

    2 sort by 日期

    3 创建新的列 记录每日体重差值

    4 所有的 dataframe 拼一起

    5 新建列 rolling 之前创建新列数值乘积

    6 判断刚才创建的列的数值是否大于 0

    有没有优雅一点解法的建议。。。谢谢了!

    3 条回复    2020-01-24 08:27:28 +08:00
    imn1
        1
    imn1  
       2020-01-23 17:48:11 +08:00
    groupby 名字分组
    日期可做 timeline/index
    最后 where
    yellowtail
        2
    yellowtail  
    OP
       2020-01-23 19:47:18 +08:00
    @imn1 谢谢!
    ForDarkLight
        3
    ForDarkLight  
       2020-01-24 08:27:28 +08:00 via Android
    可以先把体重和时间拼成 list,然后 grouoby 和 apply,函数里面进行排序和循环等方式来判断是否大于 10 天,最后返回 0 或者 1,然后布尔索引就好了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3914 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:07 · PVG 13:07 · LAX 22:07 · JFK 01:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.