Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用值列表按特定顺序从数据帧中选择行_Python_Pandas - Fatal编程技术网

Python 如何使用值列表按特定顺序从数据帧中选择行

Python 如何使用值列表按特定顺序从数据帧中选择行,python,pandas,Python,Pandas,如果我有一个像这样的熊猫数据帧: >>> 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 >>> df[df['A'].select_keeping_order([3, 4, 5])] >>> A B 2 3 3 3

如果我有一个像这样的熊猫数据帧:

>>> 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
>>> df[df['A'].select_keeping_order([3, 4, 5])]
>>>
     A   B
2    3   3
3    4   5
0    5   1
我想在一个特定顺序的值列表中选择一些值。可能是这样的:

>>> 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
>>> df[df['A'].select_keeping_order([3, 4, 5])]
>>>
     A   B
2    3   3
3    4   5
0    5   1
我知道有一种方法叫做
isin
。但它选择的是原始顺序的值,而不是“参数顺序”

我怎么做

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

In [135]: df
Out[135]: 
   A  B
a  5  1
b  6  2
c  3  3
d  4  5

[4 rows x 2 columns]

In [138]: idx = pd.Index(df['A']).get_indexer([3,4,5]); idx
Out[138]: array([2, 3, 0])

In [136]: df.iloc[idx]
Out[136]: 
   A  B
c  3  3
d  4  5
a  5  1

[3 rows x 2 columns]

我更改了
df.index
,以明确此方法不依赖于以递增顺序作为整数的索引。

您可以这样做:
df.reindex(df.A[df['A'].isin([3,4,5])].order().index)
但此方法使用该值作为排序顺序,排序顺序可能与您想要的列表顺序不同