我有以下 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
这里循环是没有必要的-使用DataFrame.reindex
有Index.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)