pandas 排序问题求教

2020-01-23 17:29:21 +08:00
 yellowtail

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

比如,每天对 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

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

1449 次点击
所在节点    问与答
3 条回复
imn1
2020-01-23 17:48:11 +08:00
groupby 名字分组
日期可做 timeline/index
最后 where
yellowtail
2020-01-23 19:47:18 +08:00
@imn1 谢谢!
ForDarkLight
2020-01-24 08:27:28 +08:00
可以先把体重和时间拼成 list,然后 grouoby 和 apply,函数里面进行排序和循环等方式来判断是否大于 10 天,最后返回 0 或者 1,然后布尔索引就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/640049

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX