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

有效选择与Pandas DataFrame中的几个值之一匹配的行

锺离辰沛
2023-03-14
问题内容

问题

在Pandas DataFrame中给定数据,如下所示:

Name     Amount
---------------
Alice       100
Bob          50
Charlie     200
Alice        30
Charlie      10

我想选择所有Name是集合中几个值之一的行{Alice, Bob}

Name     Amount
---------------
Alice       100
Bob          50
Alice        30

在Pandas中执行此操作的有效方法是什么?

我看到的选项

  1. 遍历行,使用Python处理逻辑
  2. 选择并合并许多语句,如下所示

    merge(df[df.name = specific_name] for specific_name in names) # something like this
    
  3. 执行某种联接

这里的性能折衷是什么?一种解决方案何时比另一种更好?我缺少什么解决方案?

尽管上面的示例使用字符串,但我的实际工作是使用数百万行中10-100个整数的匹配项,因此快速的NumPy操作可能很重要。


问题答案:

您可以使用isin Series方法:

In [11]: df['Name'].isin(['Alice', 'Bob'])
Out[11]: 
0     True
1     True
2    False
3     True
4    False
Name: Name, dtype: bool

In [12]: df[df.Name.isin(['Alice', 'Bob'])]
Out[12]: 
    Name  Amount
0  Alice     100
1    Bob      50
3  Alice      30


 类似资料:
  • 给定Pandas DataFrame中的数据,如下所示: 我想选择名称是集合中多个值之一的所有行{Alice,Bob} 在熊猫中,什么是有效的方法? 我看到的选项 > 执行某种联接 这里的性能权衡是什么?什么时候一种解决方案比其他解决方案更好?我错过了什么解决方案? 虽然上面的示例使用字符串,但我的实际作业在数百万行上使用10-100个整数的匹配,因此快速NumPy操作可能是相关的。

  • 在发电机表中,我希望通过选择属性值与一组值匹配的所有项来查询。例如,我的表具有current_status属性,因此我希望所有具有“新”或“ASSIGNED”值的项。如果我对current_status属性应用GSI,看起来我必须在两个查询中执行此操作?或者进行扫描?

  • 问题内容: 这是桌子:- 而下面是一个 虚构的 sql 预期的结果是:- (一种) (B) (C) 最喜欢’A’的情况! 我知道这种情况与组合有关。 在现实世界中-客户从商店获得商品,并且由于他与商店之间达成协议,他每个星期五都付款。例如,付款金额不是项目的确切总和:他得到5册50钪(= 250钪)的书,而星期五他带来了150册。所以前3本书非常匹配-3 * 50 = 150.我需要找到那三本书的

  • 问题内容: 假设我有一个包含A列,B列和C列的表。如何编写查询以选择A列或B列或C列等于某个值的所有行?谢谢。 更新: 我想忘记提及我的困惑了。假设还有另一列(第1列),我需要根据以下逻辑进行选择: …其中Column1 =’..’AND(ColumnA =’..’OR ColumnB =’..’OR ColumnC =’..’) 像我上面用括号所做的那样对语句进行分组以获得所需的逻辑有效吗? 问

  • 问题内容: 这似乎很基本,但我无法弄清楚。 我有一个表“ item_tags”,我想选择所有与标签1和2匹配的项目(例如,每个项目都必须同时具有两个标签)。 我将如何在mysql中执行此操作? 创建表是: 谢谢! 问题答案: 使用: 您需要定义GROUP BY和HAVING子句,并且不同标签ID的数量必须等于您在IN子句中指定的标签数。

  • 问题内容: 这是一张桌子… 我需要返回总数量等于或超过当前库存水平的最新行,一旦达到总数,就不包括任何其他行,因此我希望只看到这些行… 我假设我需要CTE(公用表表达式),并且已经看过这个问题,但是看不到如何将其转换为我的要求。 帮助!? 问题答案: 退货