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

标签 python pandas

我有一个数据框,表示一系列部分的失败数据,显示 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

关于Python - Pandas - 从其他列数据创建 "first fail"列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28658931/

相关文章:

python - 设置 cv2 窗口的全屏属性时出错

python - 在连接到 mySql 服务器之前在后台运行 ssh 端口转发

python - pandas 数据帧上 bool 运算符的时间复杂度

python - 日期列表中的时间序列-python

python - 创建一个使用时序逻辑在两种不同状态之间切换的模型?

python - Scrapy 在某些 <p> 之后提取

python - 使用 pymssql 将日期时间对象插入 SQL Server

python - Sqlalchemy 在查询过程中失去连接

python - Python Pandas 中因子变量的最接近等价物

Python:如何避免循环在 Pandas 数据框中进行转换?