Python - Pandas - 从其他列数据创建 "first fail" 列

Python - Pandas - create "first fail" column from other column data

我有一个数据框,代表一系列部分的失败数据,显示 3 个测试(A、B、C)中的哪一个通过 (0) 或失败 (1)。

    A   B   C
1   0   1   1
2   0   0   0
3   1   0   0
4   0   0   1
5   0   0   0
6   0   1   0
7   1   1   0
8   1   1   1

我想在数据框中添加最后一列,显示每个部分的首次失败 (FF),如果没有失败,则显示默认值 (P)。

    A   B   C  |  FF
1   0   1   1  |  B
2   0   0   0  |  P
3   1   0   0  |  A
4   0   0   1  |  C
5   0   0   0  |  P
6   0   1   0  |  B
7   1   1   0  |  A
8   1   1   1  |  A

有什么简单的方法可以做到这一点pandas?是否需要遍历每一行?

也许:

>>> df['FF'] = df.dot(df.columns).str.slice(0, 1).replace('', 'P')
>>> df
   A  B  C FF
1  0  1  1  B
2  0  0  0  P
3  1  0  0  A
4  0  0  1  C
5  0  0  0  P
6  0  1  0  B
7  1  1  0  A
8  1  1  1  A

或者:

>>> df['FF'] = np.where(df.any(axis=1), df.idxmax(axis=1), 'P')
>>> df
   A  B  C FF
1  0  1  1  B
2  0  0  0  P
3  1  0  0  A
4  0  0  1  C
5  0  0  0  P
6  0  1  0  B
7  1  1  0  A
8  1  1  1  A