我正在寻找使Pandas DataFrame列保持一致的优雅的Pythonic方式。意义:

  • 确保存在主列表中的所有列,如果没有,则添加到空的占位符列中。
  • 确保列的顺序与主列表的顺序相同。

  • 我有以下有效的示例,但是是否有内置的Pandas方法可以实现相同的目标?
    import pandas as pd
    df1 = pd.DataFrame(data=[{'a':1,'b':32, 'c':32}])
    print df1
    
       a   b   c
    0  1  32  32
    
    column_master_list = ['b', 'c', 'e', 'd', 'a']
    def get_dataframe_with_consistent_header(df, headers):
        for col in headers:
            if col not in df.columns:
                df[col] = pd.np.NaN
        return df[headers]
    
    print get_dataframe_with_consistent_header(df1, column_master_list)
    

    b c e d a
    0 32 32 NaN NaN 1

    最佳答案

    您可以使用 reindex 方法。传递列名列表,并指定'columns'。默认情况下,缺少条目的填充值为NaN:

    >>> df1.reindex(column_master_list, axis='columns')
        b   c   e   d  a
    0  32  32 NaN NaN  1
    

    关于python - 在Pandas DataFrame中使列和顺序保持一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26866633/

    10-16 00:58