代码之家  ›  专栏  ›  技术社区  ›  hoa tran

如果列具有相同的零件名称,如何对列进行重新排序

  •  0
  • hoa tran  · 技术社区  · 6 月前

    如果列具有相同的部分名称,我想重新排序列名。样品如下:

    import pandas as pd
    
    df = pd.DataFrame({'Branch': ['Hanoi'], '20241201_Candy': [3], '20241202_Candy': [4], '20241203_Candy': [5],
                      '20241201_Candle': [3], '20241202_Candle': [4], '20241203_Candle': [5],
                      '20241201_Biscuit': [3], '20241202_Biscuit': [4], '20241203_Biscuit': [5]})
    
    df
    

    以下是我预期的输出:

    df2 = pd.DataFrame({'Branch': ['Hanoi'], 
                        '20241201_Biscuit': [3], '20241201_Candle': [3], '20241201_Candy': [3], 
                        '20241202_Biscuit': [4], '20241202_Candle': [4], '20241202_Candy': [4],
                        '20241203_Biscuit': [5], '20241203_Candle': [5], '20241203_Candy': [5]})
    

    因此,如果数据帧的日期相同,我想自动重新排序。

    1 回复  |  直到 6 月前
        1
  •  4
  •   ouroboros1    6 月前

    您可以使用 df.reindex ,单列 'Branch' 并申请 sorted 对于其余部分, df.columns[1:] :

    out = df.reindex(['Branch'] + sorted(df.columns[1:]), axis=1)
    
    out.equals(df2)
    # True
    

    或者直接:

    out2 = df[['Branch'] + sorted(df.columns[1:])]
    
    out2.equals(df2)
    # True