【问题标题】:How to use or operator in python for selecting multiple values from a column in a csv如何在python中使用或运算符从csv中的列中选择多个值
【发布时间】:2020-02-29 19:42:14
【问题描述】:

我正在尝试计算在一个特定列“y”中具有数字 2 或 3 或 4 或 5 的人的百分比,但我收到以下错误: TypeError:| 的操作数类型不受支持:“str”和“bool”

这是我的代码:

All = df.shape[0]
Seizure = df[df['y'] == 1]
nonSeizure = (df[df['y'] == 2]) | (df[df['y'] == 3]) | (df[df['y'] == 4]) | (df[df['y'] == 5])

x = len(Seizure)/All
y = len(nonSeizure)/All

print('Seizure :',x*100,'%')
print('non Seizure :',y*100,'%')

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用 pandas 数据框的isin 函数来实现所需的结果。

    isin() 函数用于检查 DataFrame 中的每个元素是否 是否包含在值中。

    这是您可能想尝试的代码,

    lst = [2, 3, 4, 5] # --> declare the list
    
    All = df.shape[0]
    Seizure = df[df['y'] == 1]
    nonSeizure = df[df['y'].isin(lst)]
    
    x = len(Seizure)/All
    y = len(nonSeizure)/All
    
    print('Seizure :',x*100,'%')
    print('non Seizure :',y*100,'%')
    

    【讨论】:

      【解决方案2】:

      使用nonSeizure = df.loc[df['y'].isin([2, 3, 4, 5])],因为它是一种更 Pythonic 的方式。您的代码可能会这样编码。

      【讨论】:

        猜你喜欢
        • 2021-09-01
        • 2014-08-07
        • 2017-11-14
        • 2018-09-11
        • 2019-06-13
        • 2019-09-09
        • 2020-03-13
        • 2014-02-20
        相关资源
        最近更新 更多