我有一个包含两列的数据框:一列包含零和一个值,另一列包含数字值。
ZeroOne Value
0 10
1 20
0 15
目标是创建一个新列,如果ZeroOne列包含“ 0”,则将value列的值放在其中。如果ZeroOne值为1,则新列应为0。因此,在我的示例中,应为以下结果:
ZeroOne Value Result
0 10 10
1 20 0
0 15 15
我试图做一个功能:
def function(a,b):
if a == 1:
return b
else:
return 0
然后使变量a和b
a = df['ZeroOne']
b = df['Value']
然后,我添加了一个带有此功能的新列
df['result'] = function(a,b)
它不断给我带来价值错误:
The truth value of a Series is ambiguous. Use a.empty, a.bool(),
a.item(), a.any() or a.all().
如何获得结果,我在做什么错?
最佳答案
对于这种情况,您可以使用numpy库中的np.where
:
df['Result'] = np.where(df['ZeroOne'] == 0, df['Value'], 0)
它类似于Adams Soluation,但您也可以为其添加其他条件,该函数的第一个空格为您提供条件,如果条件为True,则发生情况,如果错误,则发生情况。
关于python - 根据给出ValueError的函数制作新列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56768533/