在Pandas DataFrame中使列名和顺序保持一致

6

我正在寻找一种优雅、Pythonic的方法来使Pandas DataFrame列保持一致。这意味着:

  1. 确保主列表中所有列均存在,如不存在,则添加一个空占位符列。
  2. 确保列与主列表中的顺序相同。

我有以下示例可以完成此目标,但是否有内置的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
1个回答

5
你可以使用reindex方法。传入列名列表并指定'columns'。默认情况下,缺失条目的填充值为NaN
>>> df1.reindex(column_master_list, axis='columns')
    b   c   e   d  a
0  32  32 NaN NaN  1

2
尝试使用 df = df.reindex(columns=master_columns) - Asclepius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接