我目前正在尝试将 json 文件(我已经可以处理)中的值与 csv 文件中的值(这可能是问题所在)进行比较。我当前的代码如下所示:
for data in trades['timestamp']:
data = pd.to_datetime(data)
print(data)
if data == ask_minute['lastUpdated']:
#....'do something'
Run Code Online (Sandbox Code Playgroud)
这使:
":Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 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
Run Code Online (Sandbox Code Playgroud)
但是,我仍然无法将 CSV 文件中的这些时间戳与 Json 文件中的时间戳进行比较。有人有想法吗?
yat*_*atu 12
让我们将其简化为一个更简单的示例。例如,通过进行以下比较:
3 == pd.Series([3,2,4,1])
0 True
1 False
2 False
3 False
dtype: bool
Run Code Online (Sandbox Code Playgroud)
你得到的结果是一个Series布尔值,大小等于pd.Series表达式右侧的 。所以这里真正发生的是整数在整个系列中广播,然后它们被比较。所以当你这样做时:
if 3 == pd.Series([3,2,4,1]):
pass
Run Code Online (Sandbox Code Playgroud)
ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
你得到一个错误。这里的问题是您将 apd.Series与一个值进行比较,因此您将拥有多个True和多个False值,如上例所示。这当然是模棱两可的,因为条件不是True或False。
因此,您需要进一步聚合结果,以便操作产生单个布尔值。为此,您必须使用any或all取决于您是否需要至少一个 ( any) 或all值来满足条件。
(3 == pd.Series([3,2,4,1])).all()
# False
Run Code Online (Sandbox Code Playgroud)
或者
(3 == pd.Series([3,2,4,1])).any()
# True
Run Code Online (Sandbox Code Playgroud)