如何基于2列之间的值过滤出数据框中的行。请参考图片。我的预期结果将是A列中的TRUE和B列中的TRUE之间的行。 如图中突出显示的那样,预期结果将是两个数据帧,其中第一个数据帧df1应该具有从索引2到6的行,而第二个数据帧df2应该具有从索引10到16的行
答案 0 :(得分:2)
因为您需要在两个条件之间添加行。
df = pd.read_excel("your_excel.xls")
start_index = df[df["A"] == "TRUE"].index[0]
end_index = df[df["B"] == "TRUE"].index[0]
df = df.iloc[start_index : end_index]
答案 1 :(得分:1)
设置
df = pd.DataFrame({'other':range(9),
'A':[True ,False, False ,False, False ,True, False, False, False],
'B':[False,False,False,True,False,False,False,True,False]})
other A B
0 0 True False
1 1 False False
2 2 False False
3 3 False True
4 4 False False
5 5 True False
6 6 False False
7 7 False True
8 8 False False
解决方案
df2 = df[df['A'].cumsum().ge(1)]
m1 = ~df2[['A','B']].any(axis = 1)
m2=(df2['A'].add(df2['B']).cumsum()%2).eq(1)
#m2=(df2['A'].add(df2['B']).cumsum()%2) #It could be enough
df_filtered = df2.loc[m1 & m2]
print(df_filtered)
other A B
1 1 False False
2 2 False False
6 6 False False
答案 2 :(得分:0)
如果它是熊猫数据框,那么以下内容可能会对您有所帮助:
result = df[(df['A']== 'TRUE' ) | (df['B'] == 'TRUE')]