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)
但此方法使用该值作为排序顺序,排序顺序可能与您想要的列表顺序不同