【问题标题】:Pandas and TypeError: unsupported operand type(s) for &: 'str' and 'bool'Pandas 和 TypeError:&:“str”和“bool”不支持的操作数类型
【发布时间】:2019-08-26 11:50:54
【问题描述】:

合并:

animal    sampleNum    SampleBreed   Nume    Breed

44          423432        GG        423432    GG  
21          2132          AA        1112      AA   
...

前三个列来自base,后两个来自newFile。 我想通过验证一些引用来创建新的 DF。我的意思是:

toNewDF = If SampleNum == Nume AND SampleBreed == Breed   

我写了那个代码:

merged.where(merged.sampleNum == merged.Nume & merged['SampleBreed'] == merged.breed)

但我收到一个错误:TypeError: unsupported operand type(s) for &: 'str' and 'bool'

如果我将 & 更改为 and 我得到:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我试图找到任何解决方案,但 SO 上的所有线程都在处理不同类型的问题。

这段代码我做错了什么?有人可以解释一下吗?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    由于运算符优先级,您只需将其括在额外的括号中。

    试试这个:

    merged.where((merged.sampleNum == merged.Nume) & (merged['SampleBreed'] == merged.breed))
    

    为了避免这种歧义,我喜欢using .eq instead of ==,像这样:

    merged.where(merged.sampleNum.eq(merged.Nume) & merged['SampleBreed'].eq(merged.breed))
    

    【讨论】:

    • 该死......我试过了,但我也遇到了一个错误......现在在你发布后一切都很好:D 谢谢!nn
    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2013-02-20
    • 2018-12-06
    • 1970-01-01
    • 2019-01-27
    • 2018-03-20
    相关资源
    最近更新 更多