Patient Date colA colB
1 1/3/2015 . 5
1 2/5/2015 3 10
1 3/5/2016 8 .
2 4/5/2014 2 .
2 etc
我正在尝试在PANDAS中定义一个函数,该函数将独特的患者视为一个项目并迭代这些独特的患者项目,以便仅保留每列最近的观察结果(替换所有其他缺失或无效的值).例如:对于患者1,输出将需要 –
Patient Date colA colB
1 1/3/2015 . .
1 2/5/2015 . 10
1 3/5/2016 8 .
我知道我可以使用.apply()之类的内容,但这并不能解释重复的患者ID …
def getrecentobs():
for i in df['Patient']:
etc
任何帮助或方向都非常感谢.
解决方法:
pandas中有一个名为last的函数,可以与groupby一起使用,为您提供给定groupby的最后一个值.我不确定为什么你需要空白行,但如果你需要它们,你可以加入groupby返回原始数据框.很抱歉排序是因为日期未在我的示例数据中排序.希望有所帮助.
例:
数据帧
id date amount code
0 3107 2010-10-20 136.4004 290
1 3001 2010-10-08 104.1800 290
2 3109 2010-10-08 276.0629 165
3 3001 2010-10-08 -177.9800 290
4 3002 2010-10-08 1871.1094 290
5 3109 2010-10-08 225.7038 155
6 3109 2010-10-08 98.5578 170
7 3107 2010-10-08 231.3949 165
8 3203 2010-10-08 333.6636 290
9 -9100 2010-10-08 3478.7500 290
如果不需要以前的行:
b.sort_values("date").groupby(["id","date"]).last().reset_index()
groupby通过“last”聚合数据,这意味着这些列的最后一个值.
仅输出具有值的最新行:
id date amount code
0 -9100 2010-10-08 3478.7500 290
1 3001 2010-10-08 -177.9800 290
2 3002 2010-10-08 1871.1094 290
3 3107 2010-10-08 231.3949 165
4 3107 2010-10-20 136.4004 290
5 3109 2010-10-08 98.5578 170
6 3203 2010-10-08 333.6636 290
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。