将列表中的空列附加到现有数据框

问题描述 投票:0回答:1

考虑一下:

我有一个(相当长的)列名称列表:

COLUMNS = [a, b, c, d]

我有一个 df,其中有一些列如列表中所示,还有一些新列:

import pandas as pd
data = {'a': [1, 2],
        'b': [True, False],
        'z': ['hi', 'bye']}
df = pd.DataFrame(data)

我需要创建一个新的 df

  1. 拥有列列表中的所有列

  2. 保留列列表中的列顺序

  3. 将 df 中的数据添加到具有相同名称的列中

  4. 将 df 中不在新 df 末尾的 COLUMNS 列表中的列添加

预期结果:

a b c d z
1 正确 - - '嗨'
2 错误 - - ‘再见’
pandas dataframe join merge concatenation
1个回答
0
投票

您可以计算索引

union
reindex
:

COLUMNS = ['a', 'b', 'c', 'd']

out = df.reindex(columns=pd.Index(COLUMNS).union(df.columns, sort=False))

输出:

   a      b   c   d    z
0  1   True NaN NaN   hi
1  2  False NaN NaN  bye
© www.soinside.com 2019 - 2024. All rights reserved.