我有一个数据集,其中包含一个列'y',其中存在特定值。我想用这个列,做一个新的列(z),表示如果y值是47472,那么z应该是1000,如果y<;1000,那么z=y*2,否则所有其他值都应该是2000。 下面是一个数据的模拟示例。我没有“z”列,但我想创建它:
y z
0 1751 2000
1 800 1600
2 10000 2000
3 350 700
4 750 1500
5 1750 3500
6 30000 2000
7 47472 1000
def test(y):
if y == 47472:
z=1000
elif y < 1000:
z=y*2
else:
z=2000
return Z
# I tried to call the above function below
z = test(y)
z
但我没有得到结果,而是显示以下错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
问题是您在if语句中使用了一个序列,例如:
假设
^{pr2}$y
是数据帧的一部分,这将产生布尔值列表:这是不合法的,因此它建议您使用返回一个布尔值的布尔函数,例如
any()
,all()
,等等。 相反,您应该使用boolean indexing:编辑:正如EdChum所说,我正在执行chained indexing:
应通过使用
loc
来避免:相关问题 更多 >
编程相关推荐