熊猫根据条件更改列值的有效方法

克里斯

我有一个大数据框,我想根据其他列的值更改某些行的值。我的 for 循环的问题是大型数据集需要很长时间。

数据框的列类似于

标签 预言 测试标签1 测试标签2 测试标签3
标签 1 标签2 0.3 0.6 0.1

在这种情况下,由于 pred_label2 < 0.9,列“预测”的值应更改为“label1”

for i, row in df.iterrows():
    pred_label = row['prediction']
    proba_label = 'proba_' + pred_label
    probability = row[proba_label]
    if probability <= 0.9:
        df.at[i, 'prediction'] = row['label']

示例 DF

data = {'host': ['A','B','A'],
       'label': ['label1', 'label2', 'label1'],
       'prediction': ['label1', 'label3', 'label3'],
       'proba_label1': [0.9, 0.03, 0.2],
       'proba_label3': [0.1, 0.95, 0.75],
       'proba_label2': [0, 0.02, 0.05]
       }

df = pd.DataFrame(data)
阿恩

从示例数据和可能的上下文(具有用于分类的 softmax 函数的机器学习模型),很明显,初始预测始终是具有最高概率的标签。

您可以利用这一事实来避免任何循环或查找:

proba_max = np.max([df.proba_label1, df.proba_label2, df.proba_label3], axis=0)
df['prediction'] = np.where(proba_max <= 0.9, df['label'], df['prediction'])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据条件更新数据框列的有效方法

熊猫:根据跨所有列的条件有效排除行

根据条件更改熊猫中的列值

根据熊猫中的条件删除 DataFrame 行的最有效方法是什么?

条件值设定的有效方法

dplyr根据条件以一种有效的方式在单个列中变异替换值

有条件且有效地更改列中的特定值

根据条件使用前一行值的有效方法

在满足条件的列中查找熊猫行的有效方法

在熊猫中基于条件分配价值的有效方法?

根据R数据帧中其他列的值缩放列的有效方法

根据R数据帧中其他列的值缩放列的有效方法

熊猫:在分组数据框中仅在选定列中联接值的有效方法

应用多个布尔蒙版以使用熊猫在列中设置值的有效方法

根据来自另一个数据框的条件填充熊猫数据框的有效方法

根据条件应用函数的最有效方法

根据列值将大文件拆分为较小文件的有效方法

如何根据熊猫中字符串的出现情况有效地分配列值?

在Numpy中比较两个单元格之间的值并根据条件分配值的有效方法

熊猫数据框根据条件更改列中的值

熊猫:使用iloc根据条件更改df列值

如何根据某些条件更改熊猫中的列值

根据熊猫的条件更改数据框的所有值

合并熊猫中列的更有效方法

基于嵌套的if条件创建新列并比较R中列表中的值的有效方法

熊猫:根据条件有效地进行多重播放

根据条件有效地为熊猫数据框创建新行

根据 df1 中的值的条件在 df2 中查找行的有效方法

熊猫有效的空值