Python-pandas : the truth value of a series is ambiguous

标签 python pandas

我目前正在尝试将 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 值。为此,您必须使用 anyall取决于您是否需要至少一个(任何)或所有值来满足条件。

(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/

相关文章:

python - Pandas 两个数据帧在 CIDR 中查找 IP 并在 CIDR 列中映射

python - 当 str_ 无法提升 datetime64 时,使用 numpy.where

python - 使用列中的日期范围扩展 Pandas 数据框

python - Pandas Apply 函数引用列名

python - Dataframe:从单个 ID 中提取多个 parent 并计算出现次数

python - 一个python虚拟环境和具体的系统库有什么关系?

python - 为什么我在没有释放按键的情况下收到 Pygame KEYUP 事件?

python - 提高使用 for 循环的代码的性能

python - 将实例保存到数据库之前/之后是否触发了 Django post_save?

python - 计算列字符串值中包含的每个单词的频率