Pandas:使用pd.Series对带索引的pd.DataFrame进行排序

5 投票
1 回答
2160 浏览
提问于 2025-04-17 16:43

我想要根据另一个按特定顺序排序的序列来对一个数据框(DataFrame)进行排序(轴 = 0)。

举个例子:这个数据框包含了国家代码的索引,比如 'AUS'、'BWA' 等等(按字母顺序排序)。而这个序列则包含了一些国家代码及其对应的GDP(按GDP排序)。

我可以用 DataFrame.join(Series) 来解决这个问题,然后再对 'GDP' 这一列进行排序,最后删除 DF['GDP'],但有没有办法直接做到这一点,而不需要先把这两个结构合并在一起呢?

1 个回答

4

你可以通过(已排序的)系列的索引来进行 reindex 操作:

In [1]: df = pd.DataFrame([[1, 2], [3, 4]], index=list('ab'))

In [2]: s = pd.Series([2,1], index=list('ab'))

In [3]: s
Out[3]: 
a    2
b    1

In [4]: s.sort()

In [5]: df.reindex(s.index)
Out[5]: 
   0  1
b  3  4
a  1  2

撰写回答