python - ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。&
问题描述
我有一个数据框“信号”:
coresym open_orders direction
27 EURUSD 2.0 1.0
76 XAUUSD 2.0 9.0
因为我需要一些条件来设置我的“_exec_dict”,这是一本告诉交易平台我的订单是什么的字典?
for symbol in do_symbols:
#close positon
if ((signal['coresym']==symbol) & (signal['direction'] == 9)):
_exec_dict['_action'] = 'CLOSE'
_exec_dict['_symbol'] = symbol
_exec_dict['_magic'] = symbols_magic_dic[symbol]
_ret = self._execution._execute_(_exec_dict)
print('{} is traded'.format(symbol))
问题是我无法使用
if ((signal['coresym']==symbol) & (signal['direction'] == 9)):
进行条件判断。
要进行测试:
if((signal['coresym']=='XAUUSD') & (signal['direction'] == 9)):
print('ok')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-52-f0dcc93290aa> in <module>
----> 1 if((signal['coresym']=='XAUUSD') & (signal['direction'] == 9)):
2 print('ok')
~\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
1476
1477 def __nonzero__(self):
-> 1478 raise ValueError(
1479 f"The truth value of a {type(self).__name__} is ambiguous. "
1480 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有一些交替,
if signal[signal['coresym'] == 'XAUUSD']['direction'] == 9:
print('ok')
结果是:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-49-67440d7a0b81> in <module>
----> 1 if signal[signal['coresym'] == 'XAUUSD']['direction'] == 9:
2 print('ok')
~\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
1476
1477 def __nonzero__(self):
-> 1478 raise ValueError(
1479 f"The truth value of a {type(self).__name__} is ambiguous. "
1480 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
经过搜索,一个系列的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all() 我确实使用 '&'。
解决方案
这&
不是问题。
if((signal['coresym']=='XAUUSD') & (signal['direction'] == 9)): print('ok')
你是不是想说的所有元素都signal['coresym']
等于XAUUSD
和的所有元素。signal['direction']
=9
或者你的意思是如果any
他们。
这是错误描述的歧义。
使用all()
或any()
围绕你的predcats。例如:
if((signal['coresym']=='XAUUSD').all() & (signal['direction'] == 9).all()): print('ok')
推荐阅读
- chocolatey - 如何让 Chocolatey 中的包参数正常工作?
- c# - 如何在 C# 中通过 VLC api 流式传输视频
- python - 使用另一个 python 脚本远程执行 python 脚本
- azure-eventgrid - 使用死信存储更新 Azure 事件网格函数订阅
- python - tensorflow tf.edit_distance 需要解释吗?
- php - 如果产品在 magento 1.9.3 中有特价,则不显示等级价格
- javascript - 如何在不评估数字的情况下让 JavaScript 输出字符串?
- idris - Idris 练习中的类型错误
- ssl - Prestashop 1.5 无法启用 SSL
- postgresql - 从 Dataframe 批量插入到 DB 忽略 Pyspark 中的失败行