首页 > 解决方案 > 根据 pandas 中的行名重新排序列名

问题描述

您好,我有一个 df,例如:

        A       B       C       D       F
B  0.9326  0.0000  0.4410  0.6526  0.0000
C  1.0158  0.0000  0.0000  0.0000  0.0000
D  1.1740  0.0000  0.5257  0.0000  0.0000
E  1.5009  1.4384  1.2305  1.3852  0.0313
F  1.4572  1.4342  1.1664  1.3243  0.0000

d={'A': {'B': 0.9326, 'C': 1.0158, 'D': 1.174, 'E': 1.5009, 'F': 1.4572}, 'B': {'B': 0.0, 'C': 0.0, 'D': 0.0, 'E': 1.4384, 'F': 1.4342}, 'C': {'B': 0.441, 'C': 0.0, 'D': 0.5257, 'E': 1.2305, 'F': 1.1664}, 'D': {'B': 0.6526, 'C': 0.0, 'D': 0.0, 'E': 1.3852, 'F': 1.3243}, 'F': {'B': 0.0, 'C': 0.0, 'D': 0.0, 'E': 0.0313, 'F': 0.0}}

df= pd.DataFrame.from_dict(d)

我想按照行名顺序重新排序列并得到:

        B       C       D       E       F
B  
C  
D  
E  
F  

当然,如果我填充输出 expectec 示例,我们应该在所有对角线上都有 0.000 个值。

有人有想法吗?

标签: python-3.xpandas

解决方案


它是reindex

df.reindex(df.index, axis=1)

输出:

        B       C       D   E       F
B  0.0000  0.4410  0.6526 NaN  0.0000
C  0.0000  0.0000  0.0000 NaN  0.0000
D  0.0000  0.5257  0.0000 NaN  0.0000
E  1.4384  1.2305  1.3852 NaN  0.0313
F  1.4342  1.1664  1.3243 NaN  0.0000

推荐阅读