Python 使用值列表从数据框中选择行

Python 使用值列表从数据框中选择行,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有以下数据帧: df = DataFrame({'A' : [5,6,3,4], 'B' : [1,2,3, 5]}) df A B 0 5 1 1 6 2 2 3 3 3 4 5 我可以基于特定值进行子集划分: x = df[df['A'] == 3] x A B 2 3 3 但是如何基于值列表进行子集大概是这样的: list_of_values = [3,6] y = df[df['A'] in l

假设我有以下数据帧:

df = DataFrame({'A' : [5,6,3,4], 'B' : [1,2,3, 5]})
df

     A   B
0    5   1
1    6   2
2    3   3
3    4   5
我可以基于特定值进行子集划分:

x = df[df['A'] == 3]
x

     A   B
2    3   3
但是如何基于值列表进行子集大概是这样的:

list_of_values = [3,6]

y = df[df['A'] in list_of_values]
要获得:

     A    B
1    6    2
2    3    3
您可以使用以下方法:

要得到相反的结果,请使用
~

In [4]: df[~df['A'].isin([3, 6])]
Out[4]:
   A  B
0  5  1
3  4  5
您可以使用以下方法:

另一种方法

df.loc[df.apply(lambda x: x.A in [3,6], axis=1)]
与该方法不同,这在确定列表是否包含列
a
的函数时特别有用。例如,
f(A)=2*A-5
作为函数

df.loc[df.apply(lambda x: 2*x.A-5 in [3,6], axis=1)]

需要注意的是,这种方法比isin方法慢。

如何按列表顺序返回这些值?例如,
list\u of_values
的值是3,然后是6,但返回的帧是6,然后是3。我说的不是简单的排序,而是如何具体地按照列表中的值的顺序返回。这是一个布尔索引的示例,它将顺序保留在索引之外,有关详细信息,请参阅。需要在选择后进行排序。这有助于我使用'query'和@:例如:df=pd.DataFrame({'A':[1,2,3],'B':['A','B','f']})df=pd.DataFrame({'A':[5,6,3,4],'B':[1,2,3,5]})list_of_values=[3,6]result=df.query(“A in@list_of_of_values”)结果A B 1 6 2 33@JasonStrimpel我在这里回答了你的问题:哇,这个@business非常有用
lst = [6, 3]
df.query('A in @lst')
df.loc[df.apply(lambda x: x.A in [3,6], axis=1)]
df.loc[df.apply(lambda x: 2*x.A-5 in [3,6], axis=1)]