假设我有一个按照以下方式构建的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,我想选择其名称为 name 集合 names 成员的行。
isin()
,但我以为它是一个Numpy概念并尝试搜索numpy.isin()
,结果没有找到,把自己搞得很困惑。谢谢。 - Ray