Python - Pandas - 从其他列数据创建“首次失败”列

3
我有一个数据框,代表了一系列零件的失败数据,显示了哪些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 完成这个任务的简单方法?需要逐行迭代吗?
1个回答

4

也许:

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

第一个选项很好看。谢谢。 - joelion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接