如果我有像这样的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
的方法。但它按原始顺序选择值而不是"参数顺序"。
我该怎么做?
答案 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
以明确此方法不依赖于增量顺序的整数索引。