问题
给定 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 操作可能是相关的。
最佳答案
您可以使用 isin系列方法:
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
关于python - 有效地选择与 Pandas DataFrame 中多个值之一匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22485375/