【发布时间】:2016-05-06 11:29:23
【问题描述】:
我创建了一个列表,其中包含由不同对象填充的字典:变量、pandas Series 甚至 pandas DataFrames。该列表基本上包含有关打开的单个事务的日志。
如果满足某些条件(datetime.now() 超过 transaction_close_time),我想从该列表中删除交易。我尝试在循环中这样做:
for transaction in transactions:
if condition is True:
result = do_sth_with(transaction)
transactions.remove(transaction)
但由于它包含 pandas 对象,所以我臭名昭著:
File "iterator.py", line 13, in close_trades
transactions.remove(trade)
File "/.../anaconda2/lib/python2.7/site-packages/pandas/core/generic.py", line 731, 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().
如果我没记错的话,remove 方法正在尝试将 Series 相互比较并且失败,因此出现错误。 (令人惊讶的是,虽然每次 python 尝试删除 dict 时都不会出现错误,但仅在某些情况下......)
现在我正在考虑是否有更好的方法从列表中删除这些字典。每个字典都有它的唯一 id 作为它的元素之一,但我不确定如何从该元素的列表中删除它。
【问题讨论】:
-
@PrezemyslawRobertWilk 您能否发布一个示例,说明您的列表尤其是交易的外观?
-
我只是一个列表 transactions = [transaction1, transaction2, transaction3, ...],trancationx 是包含大约 20 个不同元素变量、系列和数据帧的字典。
标签: python list dictionary pandas