根据权重和每个ID的值计算分数

时间:2019-08-10 12:59:15

标签: python pandas dataframe

我有一个数据框,其中包含每个ID的一些药品和一些带有时间戳的测量值。我需要通过以下方式计算分数:

  • 从第一个时间戳开始的每个时间戳之间的每个ID,需要计算时间差和每个时间戳之间的累积测量值,并对每个药房进行一些操作
  • 针对所有时间戳记的差异,对每个患者服用的所有药物进行所有测量的总和(如果不服用药物,则总和为0)
  • 使用每个ID的所有值创建一个数据框或一列

现在,我的数据框与此类似:

ID        PHARMA       VALUE   WEIGHT      TIMESTAMP
12345      ph1         0.6       72     2017-02-13 20:54:00 
12345      ph1         0.9       72     2017-02-13 20:59:00 
12345      ph1         0.5       72     2017-02-13 21:54:00 
12345      ph1         0.2       72     2017-02-13 21:59:00 
12345      ph2         1         72     2017-02-13 20:54:00 
12345      ph2         3         72     2017-02-13 20:54:00 
67890      ph1         0.6       80     2017-03-13 20:54:00 
67890      ph2         0.9       80     2017-03-13 20:59:00 
98765      ph3         1         90     2017-04-13 20:54:00 
98765      ph4         3         90     2017-04-13 20:54:00 

现在,可能的结果是:对于患者12345,对于他正在服用的药物(pharma1和pharma2),结果将是: 对于每个药房的每个值:[[(value * 1000)/(weight * timedelta))->(((0.6 * 1000)/(72 * 0))+(0.9 * 1000)/(72 * 5)+(0.5 * 1000)/(72 * 55)+(0.2 * 1000)/(72 * 5)+(1 * 1000)/(72 * 0)+(3 * 1000)/(72 * 5)。第一个值除以0,就是一个0

我该怎么做? 非常感谢

编辑: 分数是每个时间戳在每个药房(如果有的话)的测量值的总和:因此,如果我对第一位患者进行3次药检,则分数为:pharma1(值)+ pharma2(值)+ pharma3(值) ,每个时间戳记

预期输出:

ID        PHARMA       VALUE   WEIGHT      TIMESTAMP           PartialScore
12345      ph1         0.6       72     2017-02-13 20:54:00     0
12345      ph1         0.9       72     2017-02-13 20:59:00     2.5 
12345      ph1         0.5       72     2017-02-13 21:54:00     0.12
12345      ph1         0.2       72     2017-02-13 21:59:00     0.55
12345      ph2         1         72     2017-02-13 20:54:00     0
12345      ph2         3         72     2017-02-13 20:56:00     20.83
67890      ph1         0.6       80     2017-03-13 20:54:00     ...
67890      ph2         0.9       80     2017-03-13 20:59:00     ...
98765      ph3         1         90     2017-04-13 20:54:00     ...
98765      ph4         3         90     2017-04-13 20:54:00     ...

最终的df为:

ID         PartialScore               FinalScore
12345      0+0                           0
12345      2.5+20.83(pharma1+pharma2)    23.33
12345      0.12+0                        0.12

依此类推,直到在时间戳之间的每个时间间隔,在最终评分中计算出每个患者的每种药物为止。

简而言之:对于每家药店,对于每位患者,分数部分都是(value * 1000)/(weight *与先前时间戳记的差值分钟数)。对于每个时间增量,finalScore是所有药房的总和。

我希望现在更加清楚

1 个答案:

答案 0 :(得分:0)

我通过首先划分药品类型来解决它,然后对于分配给每个ID的每个药品,使用此部分计算了每个值与value [0]之间的差:

<TouchableOpacity activeOpacity={1}>
<Text>Hello</Text>
</TouchableOpacity>

然后将每个ID的每个时间戳的所有TempVal相加