根据列数据框中的特定值替换所有值

时间:2021-03-18 06:00:01

标签: python pandas replace

我有一个包含 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。

谢谢。

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