更改熊猫数据框中的行顺序而不会丢失或弄乱数据

发布于 2021-01-29 15:05:10

我有以下数据框:

(Index)    sample    reads yeasts    
9          CO ref    10
10         CO raai   20
11         CO tus    30

我想根据sample预期的输出更改列的顺序:

(Index)    sample    reads yeasts    
9          CO ref    10
11         CO tus    30
10         CO raai   10

我对行的索引不感兴趣。

我已经尝试过以下基于其他stackoverflow / google帖子的代码:

df=df.reindex(["CO ref","CO tus","CO raai"])

这样可以正确地更改索引,但是其他所有列都可以获取值 nan

我也尝试过:

df.index=["CO ref","CO tus","CO raai"]

这样可以正确更改索引,但其他列不会切换,因此会弄乱数据框。

也:

df["sample"].index=["CO ref","CO tus","CO raai"]

但这无济于事。

我该如何工作?

关注者
0
被浏览
118
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    对于reindex需要创建索引sample列:

    df=df.set_index(['sample']).reindex(["CO ref","CO tus","CO raai"]).reset_index()
    

    或使用有序分类:

    cats = ["CO ref","CO tus","CO raai"]
    df['sample'] = pd.CategoricalIndex(df['sample'], ordered=True, categories=cats)
    df = df.sort_values('sample')
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看