多个插入列如果不存在熊猫

Chr*_*ian 5 python pandas

我有以下 df

list_columns = ['A', 'B', 'C']
list_data = [
    [1, '2', 3],
    [4, '4', 5],
    [1, '2', 3],
    [4, '4', 6]
    ]
df = pd.DataFrame(columns=list_columns, data=list_data)
Run Code Online (Sandbox Code Playgroud)

我想检查是否存在多个列,如果不创建它们。

示例:如果 B、C、D 不存在,则创建它们(对于上述 df 它将仅创建 D 列)我知道如何使用一列执行此操作:

if 'D' not in df:
    df['D']=0
Run Code Online (Sandbox Code Playgroud)

有没有办法测试我的所有列是否都存在,如果不存在,则创建缺少的列?并且不要为每一列做一个 if

jez*_*ael 9

这里循环是没有必要的-使用DataFrame.reindexIndex.union

cols = ['B','C','D']

df = df.reindex(df.columns.union(cols, sort=False), axis=1, fill_value=0)
print (df)
   A  B  C  D
0  1  2  3  0
1  4  4  5  0
2  1  2  3  0
3  4  4  6  0
Run Code Online (Sandbox Code Playgroud)

  • 这很完美。重新索引非常有用。我会再谷歌一下。谢谢 (4认同)