当前位置: 首页 > 面试题库 >

如何在熊猫中实现具有多个列的布尔搜索

萧德庸
2023-03-14
问题内容

我有一个pandas df,并希望按照以下原则(用SQL术语)完成一些工作:

SELECT * FROM df WHERE column1 = 'a' OR column2 = 'b' OR column3 = 'c' etc.

现在,这适用于一个列/值对:

foo = df.loc[df['column']==value]

但是,我不确定如何将其扩展为多个列/值对。

  • 为了清楚起见,每一列都匹配一个不同的值。

问题答案:

由于运算符的优先级,您需要将多个条件括在括号中,并使用按位运算符(&)和(或)和(|)。

foo = df[(df['column1']==value) | (df['columns2'] == 'b') | (df['column3'] == 'c')]

如果使用andor,则熊猫可能会抱怨这是模棱两可的。在那种情况下,我们是否要比较条件中一系列的每个值还不清楚,如果只有1个或除1外的所有条件都匹配,这意味着什么。这就是为什么您应该使用按位运算符或numpynp.allnp.any指定匹配条件的原因。

还有查询方法:http : //pandas.pydata.org/pandas-
docs/dev/genic/pandas.DataFrame.query.html

但是存在一些限制,主要与列名和索引值之间可能存在歧义的问题有关。



 类似资料:
  • 问题内容: 我有一个数据集,其中我试图确定每个人的危险因素数量。所以我有以下数据: 每个属性(年龄,吸烟者,糖尿病)都有自己的条件来确定是否是危险因素。因此,如果年龄> = 45,则是一个危险因素。吸烟者和糖尿病为“ Y”是危险因素。我想要添加一列,以根据这些条件总计每个人的风险因素数量。因此数据如下所示: 我有一个样本数据集,我在Excel中鬼混,而我这样做的方式是使用COUNTIF公式,如下所

  • 我有一系列不同元素的值。值计数显示如下。 我想为每个类别创建列,并为每一行标记True/False。 e. g. 我设法从所有项目中获取了这些类别的唯一列表。我还可以通过在此处的解决方案中给出的方法将其制作成单独的列。 但在我的情况下,数据是不完整的/变化的,因此给我一个DF,如下所示 有没有办法使用熊猫或其他python工具将其转换为所需的输出。我现在正在使用pandas.pivot_table

  • 问题内容: 我想根据以下条件创建一个带有数值的新列: 一种。 b。 C。所有其他组合, 我希望最终结果如下: 我该怎么做? 问题答案: 为此,可以使用做,条件使用位和用于和与周围的多个条件括号由于运算符优先级。因此,返回条件为true的地方,否则返回:

  • 我有一个单一的CSV文件,在其中我想重命名一些列相同的名称。我的初始代码如下所示 我用这段代码从dataframe中提取了选定的列 此切片每隔三列获取一次。现在我想用相同的名称重命名每三列一次,但这样重命名我的列会出错 有没有办法在pandas中重命名多个同名列? 除了手动操作,还有其他建议吗?

  • 我正在使用迭代代码遍历具有多索引的大数据帧。结果是一个具有多索引的系列。经过一些分析后,事实证明,大部分时间都花在获取序列的单元格值上,因此我想使用 Series.at 函数,因为它要快得多。不幸的是,我没有在熊猫文档中找到任何关于多索引的内容。 这是一个简单的代码: 我曾尝试过s.at[(“酒吧”、“一家”)],s.at[“酒吧”,“一家”),但没有这些作品。 有人知道如何在这种情况下使用.at

  • 我有这样一个数据帧: 我想选择第二列包含单词“NL”的行,它类似于SQL命令。有人知道Python Pandas中类似的命令吗?