如何使用值列表按特定顺序选择pandas Dataframe的行

2 投票
1 回答
1629 浏览
提问于 2025-04-17 23:15

如果我有一个这样的 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    4   5
0    5   1

我知道有一个叫做 isin 的方法。但它是按照原始顺序来选择值,而不是按照我想要的顺序来选择。

那我该怎么做呢?

1 个回答

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,这样可以更清楚地说明这个方法并不依赖于索引是按顺序递增的整数。

撰写回答