假设我有一个包含两列的Pandas数据框,如:
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': [100, 200, 300, 400]})
print(df)
a b
0 1 100
1 2 200
2 3 300
3 4 400
假设我还有一个熊猫系列,比如:
s = pd.Series([1, 3, 2, 4])
print(s)
0 1
1 3
2 2
3 4
dtype: int64
如何将a
列排序为与s
系列相同的顺序,并将相应的行值排序在一起
我期望的结果是:
a b
0 1 100
1 3 300
2 2 200
3 4 400
有没有办法做到这一点
请检查下面的自我回答。
我经常遇到这些问题,所以我只是想和大家分享一下我的解决方案
解决方案:
解决方案1:
使用
set_index
将a
列转换为索引,然后使用reindex
更改顺序,然后使用rename_axis
将索引名称更改回a
,然后使用reset_index
将a
列从索引转换回列:解决方案2:
使用
set_index
将a
列转换为索引,然后使用loc
更改顺序,然后使用reset_index
将a
列从索引转换回列:解决方案3:
使用
iloc
以不同的顺序对行进行索引,然后使用map
获得适合df
的顺序,以使其与s
系列一起排序:解决方案4:
使用
pd.DataFrame
创建新的数据帧对象,然后使用sorted
和key
参数按s
系列对数据帧进行排序:时间:
使用以下代码计时:
输出:
@Allen也有一个很好的答案
那么:
相关问题 更多 >
编程相关推荐