繁体   English   中英

Pandas,如何找到满足一定条件的行,并在新的dataframe中保存上一行

[英]Pandas, how to find rows that meet certain conditions and save the previous row in a new dataframe

我试图做到这一点,以便我的脚本读取“data_b”和“data_d”列,如果它看到条件“Rest”和“True”,它应该保存前一行。

data_frame

Row_ID           data_a      data_b    data_c      data_d
59               0.30781     Discharge 2.31725     NaN
60               0.30786     Discharge 2.31714     NaN
61               0.30792          Rest 2.34857    True
62               0.31313          Rest 2.38084     NaN
181              0.93398     Discharge 2.31103     NaN
182              0.93398     Discharge 2.31115     NaN
183              0.93408          Rest 2.34550    True
184              0.93930          Rest 2.36800     NaN

我希望 output 如下所示:

Row_ID           data_a      data_b    data_c      data_d
60               0.30786     Discharge 2.31714     NaN
182              0.93398     Discharge 2.31115     NaN

如您所见,第 61 行和第 183 行符合条件。 为此,它必须只保存第 60 行和 182 行。

尝试:

l = list()
for index , row in df.iterrows():
    try:
        if row["data_b"] == "Rest" and row["data_d"] == "True":
            fila = df.iloc[index - 1,:]
            l.append(fila)
    except Exception as e:
        print(e)
        continue
result = pd.DataFrame(l)

尝试shift

newdf = df[df['data_d'].shift(-1).equal('True') & df['data_b'].shift(-1).eq('Rest')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM