python – 迭代PANDAS中的唯一值
发布时间:2020-12-20 13:10:38 所属栏目:Python 来源:网络整理
导读:我有一个以下格式的数据集: Patient Date colA colB1 1/3/2015 . 51 2/5/2015 3 101 3/5/2016 8 .2 4/5/2014 2 .2 etc 我正在尝试在PANDAS中定义一个函数,该函数将独特的患者视为一个项目并迭代这些独特的患者项目,以便仅保留每列最近的观察结果(替换所有其
我有一个以下格式的数据集:
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |