我试图让我的脚本读取“data_b”和“data_d”列,如果它看到条件“Rest”和“True”,它应该保存前一行。data_frameRow_ID data_a data_b data_c data_d59 0.30781 Discharge 2.31725 NaN60 0.30786 Discharge 2.31714 NaN61 0.30792 Rest 2.34857 True62 0.31313 Rest 2.38084 NaN181 0.93398 Discharge 2.31103 NaN182 0.93398 Discharge 2.31115 NaN183 0.93408 Rest 2.34550 True184 0.93930 Rest 2.36800 NaN我希望输出如下:Row_ID data_a data_b data_c data_d60 0.30786 Discharge 2.31714 NaN182 0.93398 Discharge 2.31115 NaN如您所见,第 61 行和第 183 行满足条件。因为它必须仅保存第 60 行和第 182 行。
2 回答
![?](http://img1.sycdn.imooc.com/545850200001359c02200220-100-100.jpg)
杨__羊羊
TA贡献1943条经验 获得超7个赞
尝试:
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)
![?](http://img1.sycdn.imooc.com/5458655200013d9802200220-100-100.jpg)
料青山看我应如是
TA贡献1772条经验 获得超8个赞
尝试用shift
newdf = df[df['data_d'].shift(-1).equal('True') & df['data_b'].shift(-1).eq('Rest')]
添加回答
举报
0/150
提交
取消