gpt4 book ai didi

python - 迭代 PANDAS 中的唯一值

转载 作者:太空宇宙 更新时间:2023-11-03 12:04:41 26 4
gpt4 key购买 nike

我有以下格式的数据集:

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

关于python - 迭代 PANDAS 中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35894570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com