使 Pandas DataFrame 中的列和排序保持一致

sku*_*z00 5 python dataframe pandas

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

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

我有以下示例有效,但是是否有内置的 Pandas 方法可以实现相同的目标?

import pandas as pd
df1 = pd.DataFrame(data=[{'a':1,'b':32, 'c':32}])
print df1
Run Code Online (Sandbox Code Playgroud)
   美国广播公司
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)
Run Code Online (Sandbox Code Playgroud)
   西达
0 32 32 NaN NaN 1

Ale*_*ley 5

您可以使用该reindex方法。传入列名称列表并指定'columns'。缺失条目的填充值NaN默认为:

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

  • 尝试`df = df.reindex(columns=master_columns)`。 (2认同)