我目前正在尝试将 json 文件(我已经可以处理)中的值与 csv 文件中的值(这可能是问题)进行比较。我当前的代码如下所示:
for data in trades['timestamp']:
data = pd.to_datetime(data)
print(data)
if data == ask_minute['lastUpdated']:
#....'do something'
这给出:
":The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()."
我当前的 print(data)
如下所示:
2018-10-03 18:03:38.067000
2018-10-03 18:03:38.109000
2018-10-03 18:04:28
2018-10-03 18:04:28.685000
但是,我仍然无法将 CSV 文件中的这些时间戳与 Json 文件中的时间戳进行比较。有人有主意吗?
最佳答案
让我们将其简化为一个更简单的示例。例如,通过进行以下比较:
3 == pd.Series([3,2,4,1])
0 True
1 False
2 False
3 False
dtype: bool
您得到的结果是 bool 值的Series
,其大小等于表达式右侧的pd.Series
。所以这里实际上发生的是整数在整个系列中广播,然后对它们进行比较。所以当你这样做时:
if 3 == pd.Series([3,2,4,1]):
pass
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
您收到错误消息。这里的问题是您正在将 pd.Series
与一个值进行比较,因此您将有多个 True
和多个 False
值,如下所示在上述情况下。这当然是不明确的,因为条件既不是True
也不是False
。
因此,您需要进一步聚合结果,以便从操作中生成单个 bool 值。为此,您必须使用 any
或all
取决于您是否需要至少一个(任何
)或所有
值来满足条件。
(3 == pd.Series([3,2,4,1])).all()
# False
或
(3 == pd.Series([3,2,4,1])).any()
# True
关于Python-pandas : the truth value of a series is ambiguous,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53830081/