【问题标题】:How to filter data from dataframe with comparison operator between boolean and string data types如何使用布尔和字符串数据类型之间的比较运算符从数据框中过滤数据
【发布时间】:2022-01-12 03:50:05
【问题描述】:

我正在处理具有以下类型数据的数据集:

gender,year,Horror,Fiction,Comedy,words
m,  1980,   F,  F,  T,  abc def
m,  1980,   F,  T,  F,  gh hjjtt kl[pom
f,  1990,   F,  F,  T,  ghj khgr kll
f,  1970,   T,  F,  F,  or jtu jajd
f,  2000,   F,  F,  T,  rreun jfmn
f,  2010,   T,  F,  F,  jhhkjn jlkjan

所以这里我有 Horror、Fiction 和 Comedy 列的布尔值。

我要统计Horror == True列所在的男性人数

我尝试了以下所有代码,但都给出了错误:

Male_data = data[data.gender == 'm' & data.Horror == True]
Male_data = data[data['gender'] == 'm' & data['Horror'] == True]
Male_data = data[data['gender'] == 'm'] & data[data['Horror'] == True]

错误是:

TypeError:无法使用 dtyped [bool] 数组和 [bool] 类型的标量执行“rand_”

【问题讨论】:

  • 在前 2 次尝试周围添加一些括号。 & 通常具有相当高的 ptecedence 顺序

标签: python pandas dataframe data-science


【解决方案1】:

试试这个:

Male_data = data[(data.gender == 'm') & (data.Horror == True)]

或者:

Male_data = data[data.gender.eq('m') & data.Horror.eq(True)]

& 的优先级高于==,因此您需要将== 条件括在括号中以覆盖优先级规则并使== 操作首先计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-16
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多