【发布时间】:2014-04-24 11:43:40
【问题描述】:
问题
给定 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 中执行此操作的有效方法是什么?
我看到的选项
- 遍历行,使用 Python 处理逻辑
-
选择并合并许多语句,如下所示
merge(df[df.name = specific_name] for specific_name in names) # something like this 执行某种连接
这里的性能权衡是什么?什么时候一种解决方案比其他解决方案更好?我缺少什么解决方案?
虽然上面的示例使用字符串,但我的实际工作使用匹配数百万行的 10-100 个整数,因此快速 NumPy 操作可能是相关的。
【问题讨论】:
-
“我的实际工作是数字”:您的实际问题很重要。例如,如果您需要对浮点数进行容忍,您将无法使用与字符串相同的解决方案。
-
@DSM 已编辑以指定我正在匹配整数。还增加了问题的规模。