当前位置: 首页 > 面试题库 >

根据其他两个列的相等性创建一个新列

钮出野
2023-03-14
问题内容

我想比较在创建新列的两列的值bin_crnn。如果它们等于1,我想要1,否则等于0。

# coding: utf-8
import pandas as pd

df = pd.read_csv('file.csv',sep=',')

if df['crnn_pred']==df['manual_raw_value']:
    df['bin_crnn']=1
else:
    df['bin_crnn']=0

我得到了以下错误

    if df['crnn_pred']==df['manual_raw_value']:
  File "/home/ahmed/anaconda3/envs/cv/lib/python2.7/site-packages/pandas/core/generic.py", line 917, in __nonzero__
    .format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

问题答案:

您需要将布尔型蒙版转换intastype

df['bin_crnn'] = (df['crnn_pred']==df['manual_raw_value']).astype(int)

样品:

df = pd.DataFrame({'crnn_pred':[1,2,5], 'manual_raw_value':[1,8,5]})
print (df)
   crnn_pred  manual_raw_value
0          1                 1
1          2                 8
2          5                 5

print (df['crnn_pred']==df['manual_raw_value'])
0     True
1    False
2     True
dtype: bool

df['bin_crnn'] = (df['crnn_pred']==df['manual_raw_value']).astype(int)
print (df)
   crnn_pred  manual_raw_value  bin_crnn
0          1                 1         1
1          2                 8         0
2          5                 5         1

因为比较列的输出不是标量,而是Series(和arrayTrueFalse值,所以会出现错误。

因此需要all
any用于返回标量TrueFalse



 类似资料:
  • 我有一个数据集,其中有大量表示过程代码的字符串列变量。还有另一列变量表示编码格式(有些是ICD9,有些是其他更神秘的格式)。每次观察都是一个病人。我需要: 搜索每个带有特定前缀的变量名 确保正在使用的代码是ICD9代码(由“02”表示)。 查找这些代码中哪些与特定字符串的前3个字符匹配 如果有任何变量以这三个字符开头,则创建一个新列变量=1,如果没有匹配,则创建一个新列变量=0 变量太多了,通过c

  • 假设我有一个至少有两列col1和col2的数据帧。此外,我还有另一个数据帧,其列名是col1中的值,其索引是col2中的值。 现在我想添加col3,它在col1的索引处和col2的列中给出第二个数据帧的值。结果应该如下所示: 谢谢大家!!

  • 本文向大家介绍根据MySQL中其他两个列的值来匹配列的值,包括了根据MySQL中其他两个列的值来匹配列的值的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是根据ID和MatchID显示FirstName的查询- 这将产生以下输出-

  • 考虑下面的数据集存储在熊猫数据文件<代码> DFX < /代码>: 我有一个函数是: 现在,我想在中创建一个新列,其中包含计算出的z值 查看其他SO示例,我尝试了几个变体,包括: 返回错误。正确的方法是什么?

  • 如果没有数据,如何根据两个表中两个列的值选择新列。 提前谢了。

  • 我想在Pandas数据集中创建一个新列,基于另外两个列的值。 现在,应该如下所示: 有什么帮助吗?