【发布时间】:2017-01-29 21:29:43
【问题描述】:
假设我有一个DataFrame,构造如下:
import pandas
import numpy
column_names = ["name", "age", "score"]
names = numpy.random.choice(["Jorge", "Xavier", "Joaquin", "Juan", "Jose"], 50)
ages = numpy.random.randint(0, 100, 50)
scores = numpy.random.rand(50)
df = pandas.DataFrame.from_dict(dict(zip(column_names, [names, ages, scores])))
上面DataFrame的前10行如下所示。
age name score
0 15 Jorge 0.031380
1 44 Juan 0.373199
2 84 Xavier 0.999065
3 55 Juan 0.159873
4 55 Joaquin 0.211931
5 33 Juan 0.484350
6 22 Xavier 0.510276
7 86 Joaquin 0.490013
8 2 Jose 0.185086
9 51 Juan 0.979015
我希望能够选择name 列的元素是{"Xavier", "Joaquin"} 成员的行。我本能地在想df.iloc[df["name"] in {"Xavier", "Joaquin"}, :] 之类的东西,但这不起作用。那么我该如何实现呢?
注意
我知道我可以通过
来实现这个特定的例子df.loc[numpy.logical_or(df["name"] == "Xavier", df["name"] == "Joaquin"), :]
但这不是重点。这只是我真正问题的一个简化示例。我有一个高度为 2,340,923 的 DataFrame 和一个大小为 3,624 的名称集 names,我想选择名称是名称集 names 成员的行。
【问题讨论】:
标签: python pandas indexing set conditional-statements