在每一行中搜索数字


df1 = pd.DataFrame({"T1":[1, 7, 1, 6],
"T2": [7, 8, 9, 2],
"T3": [8, 6, 6, 6],
"T4": [3, 3, 3, 8]
"T5": [9, 1, 2, 7]
}
)
print(df1)
T1      T2     T3      T4   T5
0   1       7       8      3    9
1   7       8       6      3    1
2   1       9       6      3    2
3   6       2       6      8    7
Cond1={ 1,8,3 }
Cond2 ={ 7,8,6 }
T1      T2     T3      T4   T5  Cond1   Cond2
0   1       7       8      3    9    T       F
1   7       8       6      3    1    T       T
2   1       9       6      3    2    F       F
3   6       2       6      8    7    F       T

我正在查找任何包含数字[1,8,3]的行,这些数字将是行"0"one_answers"1"。我想将我正在搜索的数字更改为[7,8,6],这将是行"1"one_answers"3"。然后创建另一列,声明条件1和条件2等为真或假。

假设您正在寻找不同的数字,则可以使用集合运算:

target = {1,8,3}
df1.index[[target.issubset(s) for s in df1.agg(set, axis=1)]]

输出:Int64Index([0, 1], dtype='int64')

如果你想要行:

target = {1,8,3}
df1[[target.issubset(s) for s in df1.agg(set, axis=1)]]

输出:

T1  T2  T3  T4  T5
0   1   7   8   3   9
1   7   8   6   3   1

最新更新