我有名为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
,step1
,step2
等不同的数据帧,依此类推,每个数据帧都有一个名为step5
的列。
我在每个数据框的BackGas_Flow_sccm
列上使用了.describe()
,以便使用25%和75%的新功能来创建BackGas_Flow_sccm
,IQR
之类的功能&Max
。完成此操作后,我删除了所有其他列,只是将Min
,IQR
和Max
列保留在数据框中,结果如下:
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
的值的数量,step1
,step2
。
我可以做到:
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这样的数字可能很乏味。
那么,有没有一种方法可以更有效地实现呢?
答案 0 :(得分:2)
首先,您应该将这些dfs存储到list
或dict
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)