加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读