如何使用布尔和字符串数据类型之间的比较运算符从数据框中过滤数据

Posted

技术标签:

【中文标题】如何使用布尔和字符串数据类型之间的比较运算符从数据框中过滤数据【英文标题】: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

所以这里我有 HorrorFictionComedy 列的布尔值。

我要统计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 顺序 【参考方案1】:

试试这个:

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

或者:

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

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

【讨论】:

以上是关于如何使用布尔和字符串数据类型之间的比较运算符从数据框中过滤数据的主要内容,如果未能解决你的问题,请参考以下文章

js各数据类型之间的转换

JavaScript:隐式类型转换

JavaScript:隐式类型转换

Flutter之Dart数据类型及数据之间的转换

PostgreSQL之SQL操作符介绍及实践

PostgreSQL之SQL操作符介绍及实践