如何使用值列表以特定顺序从pandas Dataframe中选择行

时间:2014-03-21 08:52:49

标签: python pandas

如果我有像这样的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

我想在具有特定顺序的值列表中选择一些值。它可能看起来像这样:

>>> df[df['A'].select_keeping_order([3, 4, 5])]
>>>
     A   B
2    3   3
3    4   5
0    5   1

我知道有一种名为isin的方法。但它按原始顺序选择值而不是"参数顺序"。

我该怎么做?

1 个答案:

答案 0 :(得分:6)

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以明确此方法不依赖于增量顺序的整数索引。