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