如何使用一个数据帧中的值来计算大于或小于第二数据帧中的值的总数?

时间:2019-05-28 20:35:31

标签: python python-3.x pandas

我有名为mov dword ptr [rbp - 8], 0 ; i = 0; cmp dword ptr [rbp - 8], 0 ; i == 0? sete al ; TRUE (=1) mov cl, al and cl, 1 ; = operator always TRUE movzx edx, cl mov dword ptr [rbp - 8], edx ; set i=TRUE; test al, 1 ; al never changed, ; so final ans is TRUE step1step2等不同的数据帧,依此类推,每个数据帧都有一个名为step5的列。

我在每个数据框的BackGas_Flow_sccm列上使用了.describe(),以便使用25%和75%的新功能来创建BackGas_Flow_sccmIQR之类的功能&Max。完成此操作后,我删除了所有其他列,只是将MinIQRMax列保留在数据框中,结果如下:

Min

现在,我想使用此数据框中的值并计算像 Max Min step1 0.0061032863849765275 0.0023474178403755843 step2 0.0061032863849765275 0.0023474178403755843 step5 0.43849765258215967 0.4309859154929577 step7 0.4394366197183098 0.43192488262910805 step12 0.44178403755868545 0.43051643192488265 step15 0.44413145539906096 0.4291079812206573 step16 0.44272300469483566 0.43145539906103286 step19 0.8201877934272299 0.5610328638497655 step24 0.008450704225352117 0.0009389671361502306 step25 0.0061032863849765275 0.0023474178403755843 step26 0.0061032863849765275 0.0023474178403755843 step27 0.0061032863849765275 0.0023474178403755843 这样的数据框中大于Max或小于Min的值的数量,step1step2

我可以做到:

step5

,结果分别为424和135。表示step1[step1['BacksGas_Flow_sccm'] > 0.0061032863849765275] step1[step1['BacksGas_Flow_sccm'] < 0.0023474178403755843] df中有424个高于0.0061032863849765275的值和135个低于0.0023474178403755843的值。但是输入像0.0061032863849765275这样的数字可能很乏味。

那么,有没有一种方法可以更有效地实现呢?

编辑1 Image of dataframes in my Variable explorer window

1 个答案:

答案 0 :(得分:2)

首先,您应该将这些dfs存储到listdict

d={'step1':step1,'step2':step2....}

然后我们可以concat

s=pd.concat(d)['BacksGas_Flow_sccm'].unstack(0).describe().loc[['25%','75%']].T

之后,我们可以调用循环

for x in x.index:
    (d[x]['BacksGas_Flow_sccm'] > s.loc[x,'75%']).sum()
    (d[x]['BacksGas_Flow_sccm'] < s.loc[x,'25%']).sum()

或者没有for循环

pd.concat(d)['BacksGas_Flow_sccm'].gt(s['75%'],level=0).sum(level=0)

pd.concat(d)['BacksGas_Flow_sccm'].lt(s['25%'],level=0).sum(level=0)