我需要一些帮助。
我有一个带有int列的数据框。我要测试这些值。
test1 = (data['CC'].shift(1) > 50) & (data['CC'] < 50)
test2 = (data['CC'].shift(1) < -50) & (data['CC'] > -50)
此代码有效,并返回一系列2000行。我对此没有问题。
0 False
1 False
2 False
3 False
4 False
Name: CCI, dtype: bool
我想使用本系列来添加新列。
if(test1):
data['Sloop'] = '+S'
elif(test2):
data['Sloop'] = '-S'
else:
data['Sloop'] = 'N'
if语句不起作用:
ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
当然,这里存在test1和test2。真正的代码是:
if((data['CC'].shift(1) > 50) & (data['CC'] < 50)):
data['Sloop'] = '+S'
elif((data['CC'].shift(1) < -50) & (data['CC'] > -50)):
data['Sloop'] = '-S'
else:
data['Sloop'] = 'N'
相同错误。请帮忙。
谢谢
答案 0 :(得分:1)
使用numpy.select
:
test1 = (data['CC'].shift(1) > 50) & (data['CC'] < 50)
test2 = (data['CC'].shift(1) < -50) & (data['CC'] > -50)
data['Sloop'] = np.select([test1, test2], ['+S','-S'], default='N')