我有一个包含 2041 列的数据框。
number error1 error2 ... error2040
1 0 0 ... 1
2 1 1 ... 1
3 0 1 ... 0
... ... ... ... ...
result 0.5 0.6 0.001
结果行是特定错误导致最终错误的概率,使用 pieces
计算可能不太好,但它有效。
现在我想根据'result'中的概率将所有数字分为四类(错误的,可能有错误的,没有错误的,信息不足)
所以我想最简单的方法是用“结果”中的特定值替换所有值,然后根据行中的数字添加名为“预测”的新列,这样看起来就像
number error1 error2 ... error2040 PREDICTION
1 0 0 ... 0.001 not faulty
2 0.5 0.6 ... 0.001 FAULTY
3 0 0.6 ... 0 probably faulty
... ... ... ... ...
result 0.5 0.6 0.001
但是我被卡住了,不知道如何做第一部分 - 用“结果”行中的值替换所有列中的所有 1。
谢谢。
答案 0 :(得分:1)
基于 1) 我最初使用乘法而不是替换的想法和 2) 使用@piRSquared 的语法以及 3) 修改以排除第一列进行运算,您可以使用:
df.iloc[:-1, 1:] *= df.iloc[-1, 1:]
data = {'number': {0: '1', 1: '2', 2: '3', 3: 'result'},
'error1': {0: 0.0, 1: 1.0, 2: 0.0, 3: 0.5},
'error2': {0: 0.0, 1: 1.0, 2: 1.0, 3: 0.6},
'error2040': {0: 1.0, 1: 1.0, 2: 0.0, 3: 0.001}}
df = pd.DataFrame(data)
print(df)
number error1 error2 error2040
0 1 0.0 0.0 1.000
1 2 1.0 1.0 1.000
2 3 0.0 1.0 0.000
3 result 0.5 0.6 0.001
df.iloc[:-1, 1:] *= df.iloc[-1, 1:]
print(df)
number error1 error2 error2040
0 1 0.0 0.0 0.001
1 2 0.5 0.6 0.001
2 3 0.0 0.6 0.0
3 result 0.5 0.6 0.001