【问题标题】:pandas dataframe and/or condition syntax熊猫数据框和/或条件语法
【发布时间】:2021-09-29 23:44:10
【问题描述】:

这个 pandas 数据框条件完美运行

    df2 = df1[(df1.A >= 1) | (df1.C >= 1) ]

但如果我想根据 2 个条件过滤掉行

(1) A>=1 & B=10 

(2) C >=1


        df2 = df1[(df1.A >= 1 & df1.B=10) | (df1.C >= 1) ]

给我一​​条错误信息

[ERROR] Cannot perform 'rand_' with a dtyped [object] array and scalar of type [bool]

有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: pandas python-3.7


    【解决方案1】:

    有时,在每个条件周围加上括号会有所帮助。所以,而不是

    df2 = df1[(df1.A >= 1 & df1.B=10) | (df1.C >= 1) ]

    你会的

    df2 = df1[((df1.A >= 1) & (df1.B=10)) | (df1.C >= 1) ]

    【讨论】:

    • 谢谢。看起来很棒,效果很好!
    【解决方案2】:

    缺少一组括号。也分别在 A 和 B 周围添加括号

    试试这个

    df2 = df1[((df1.A >= 1) & (df1.B==10)) | (df1.C >= 1) ]
    

    例子

    df1 = pd.DataFrame({'A': [0,0,1,1,2,2], 'B': [0,10,0,10,0,10], 'C': [2,2,3,3,0,0]})
    df1
    
    A   B   C
    0   0   0   2
    1   0   10  2
    2   1   0   3
    3   1   10  3
    4   2   0   0
    5   2   10  0
    
    
    df2 = df1[((df1.A >= 1) & (df1.B==10)) | (df1.C >= 1) ]
    df2
    
        A   B   C
    0   0   0   2
    1   0   10  2
    2   1   0   3
    3   1   10  3
    5   2   10  0
    

    【讨论】:

    • 谢谢。看起来很棒,效果很好!
    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 2019-05-15
    • 2019-12-21
    • 2019-06-21
    • 2016-12-11
    • 2017-08-21
    • 2017-11-20
    • 2017-05-08
    相关资源
    最近更新 更多