当前位置: 首页 > 知识库问答 >
问题:

如何通过多列过滤数据帧?

池永长
2023-03-14

我试图子集一个熊猫DataFrame在python基于两个逻辑语句

即。

d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df[df.col1 = 1 and df.col2 = 3]

但是第3行的语法无效。

有没有一种方法可以在一行中完成?

共有2个答案

南宫炜
2023-03-14

免责声明:@jp_data_analysis和pandas docs提到,以下解决方案不是最好的,因为它使用链接索引。请参考Matt W.和AChampion溶液。

另一种单线解决方案。

>>> d = {'col1': [1, 2, 1], 'col2': [3, 4, 2]}
>>> df = pd.DataFrame(data=d)

>>> df[df.col1==1][df.col2==3]

   col1  col2
0     1     3

我添加了第三行,'col1'=1'col2'=2,所以我们可以有一个额外的否定测试用例。

纪实
2023-03-14

您需要使用逻辑运算符。==等于返回布尔值,=< /code>设置值。

尝试:

df[(df.col1 == 1) & (df.col2 == 3)]

 类似资料:
  • 问题内容: 我正在做熊猫分析。 我的表有700万行* 30列。单元格值的范围从-1到3随机。现在,我想根据列的值过滤掉行。 我了解如何根据多个条件进行选择,写下条件并通过“&”“ |”组合。 但是我有30列要过滤,并按相同的值过滤。例如,需要选择最后12列的值等于-1 上面的代码给了我一个布尔值。我需要实际的数据框。 这里的逻辑是“或”,表示如果任何列的值为-1,则需要选择该行。另外,很高兴知道我

  • 问题内容: 我有一个MySql表,我想查询其中 成对 的列在特定集中的行。例如,假设我的表格如下所示: 现在,我希望提取其中 (f1,f2) 对为(’a’,30)或(’b’,20)的行,即行2,3,4。我也希望使用“ IN”样式的过滤器来完成此操作,因为我可能有很多对要提取。如果我尝试类似的方法: 我得到IN子句中为f1和f2指定的值的笛卡尔积,即具有f1 =’a’或’b’的所有可能组合的行,以及

  • 问题内容: 要按单列过滤数据帧(df),如果我们考虑男性和女性的数据,则可以: 问题1-但是,如果数据跨越多年并且我只想看2014年的男性,该怎么办? 用其他语言,我可能会做类似的事情: (除了我要执行此操作,并在新的数据框对象中获取原始数据框的子集) 问题2。如何循环执行此操作,并为每个唯一的年份和性别集创建一个数据框对象(例如,2013-男,2013-女,2014-男和2014-女的df 问题

  • 问题内容: 我有一个像这样的数组: 现在,我想按某种条件过滤该数组,只保留值等于2的元素,并删除值不等于2的所有元素。 所以我的预期结果数组将是: 注意:我想保留原始数组中的键。 如何使用PHP做到这一点?有内置功能吗? 问题答案:

  • 问题内容: 我正在使用AngularJS的ngGrid模块来显示一些分页的数据。我希望能够跨多个列搜索,但是使用OR搜索。 可以说我有一列带有以下标题:Id,Name,Description。当我搜索时,我想返回ID或名称或说明包含搜索词的所有行。 我尝试使用默认搜索框,还尝试使用绑定到$ scope.filterText的外部输入框来定义自定义过滤器,例如: 但是,这似乎在所有列上都执行了“与”

  • 问题内容: 从这里开始。该解决方案仅适用于一列。如何改进多列解决方案。即如果我有一个像 如何重塑像 如果df是 然后 问题答案: 采用 要么, 另外,索引不相等