因此,我有以下数据框:
In [1]:
import pandas as pd
import numpy as np
df = pd.DataFrame([['0068edf090ceaf1356', '0068edf090ceaf1356', '0068edf090ceaf1356','0068edf090ceaf1356', '0068edf090ceaf1356', '009eft67eaa133cea4', '009eft67eaa133cea4', '009eft67eaa133cea4', '009eft67eaa133cea4'], [-26, -26 -36, 81, 181, -51, -81, 61, 71], [18.0, 27.0, 53.0, 43.6, 12.4, 24.4, 63.0,72.8]], columns = ['uuid', 'prom_completed_date', 'prom_score'])
In [2]: df
Out[2]:
uuid prom_completed_date prom_score
0068edf090ceaf1356 -26 18.0
0068edf090ceaf1356 -26 18.0
0068edf090ceaf1356 -36 27.0
0068edf090ceaf1356 81 53.0
0068edf090ceaf1356 181 43.6
009eft67eaa133cea4 -51 12.4
009eft67eaa133cea4 -81 24.4
009eft67eaa133cea4 61 63.0
009eft67eaa133cea4 71 72.8
每个患者都有多个条目。请记住,前两个条目不是重复条目,但与其他具有不同选项的列相同,因此,操作前平均值不是(18+18+27)/3,而是(18+27)/2
我想创建一个新的数据帧,其中每个uuid有三个新列:
我不确定如何在python中进行编码,同时确保uuid分组
我在找这样的东西:
In [3]:
Out[3]:
uuid postop_avgPROM preop_avgPROM difference
0068edf090ceaf1356 48.3 22.5 25.8
009eft67eaa133cea4 67.9 18.4 49.5
我尝试了以下方法:
df.query("prom_completed_date_relative">0).groupby("uuid")["prom_score"].mean().reset_index(name="postop_avgPROM_score")
但不幸的是,它似乎不起作用
多谢各位
以下是您尝试的解决方案
这将为
uuid
值和prom_completed_date_relative
正/负的每个组合提供prom_score
平均值您将需要对其进行更多的处理,以获得所需的列
在
df_avg
上使用.pivot()
:可能有一种更简洁的方法来实现您的结果,但这里有一种非常明确的多步骤方法
相关问题 更多 >
编程相关推荐