熊猫,如何查找满足某些条件的行并将上一行保存在新数据框中

时间:2020-09-02 22:59:28

标签: python pandas dataframe data-science

我正在尝试这样做,以便我的脚本读取'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

我希望输出如下:

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行。

2 个答案:

答案 0 :(得分:2)

尝试:

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)

答案 1 :(得分:1)

尝试使用shift

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