Python 基于列dataframe中的特定值替换所有值
我有一个这样的数据框,包含2041列Python 基于列dataframe中的特定值替换所有值,python,pandas,replace,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
number error1 error2 ... error2040
1 0 0 ... 1
2 1 1 ... 1
3 0 1 ... 0
... ... ... ... ...
result 0.5 0.6 0.001
结果行是特定错误导致最终错误的概率,使用片段计算可能不是很好,但它是有效的
现在我想根据“结果”中的概率将所有数字分为四类(错误、可能错误、没有错误、信息不足)
所以我想最简单的方法是用“result”中的特定值替换所有的值,然后根据行中的数字添加一个名为“prediction”的新列
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
但是我被卡住了,无法找到如何做第一部分——用“result”行中的值替换所有列中的所有1
谢谢。基于1)我最初使用乘法而不是替换的想法,以及2)基于@piRSquared的语法以及3)排除第一列进行运算的修改,您可以使用:
df.iloc[:-1, 1:] *= df.iloc[-1, 1:]
试运行:
不是替换,而是倍增?现在我觉得自己很愚蠢,没有想到这样的事情。谢谢。像@SeaBean saiddf.iloc[:-1]*=df.iloc[-1]
Good code@piRSquared一样,我已经对它进行了微调,以适应特定的布局要求,跳过第一列进行操作,并包括下面的测试运行数据。:-)
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