Самый идиоматичный выбор - два fillna
звонка,
df.fillna(d).fillna(0, downcast='infer')
df
A B C D E F
0 1 1 0 0 1 0
piRSquared предлагает assign
в качестве альтернативы первому fillna
вызову,
df.assign(**d).fillna(0, downcast='infer')
df
A B C D E F
0 1 1 0 0 1 0
Другой вариант - использовать Index.isin
для столбцов. Это однорядная форма:
df[:] = [df.columns.isin(d.keys()).astype(int)]
Чтобы обобщить до N строк, мы используем repeat
:
df[:] = df.columns.isin(d.keys()).astype(int)[None,:].repeat(len(df), axis=0)
df
A B C D E F
0 1 1 0 0 1 0
Для развлечения вы также можете использовать reindex
:
pd.DataFrame(d, index=df.index).reindex(df.columns, axis=1, fill_value=0)
A B C D E F
0 1 1 0 0 1 0