Se non si vuole riscrivere il nome delle vecchie colonne, quindi è possibile utilizzare reindex:
df.reindex(columns=[*df.columns.tolist(), 'new_column1', 'new_column2'], fill_value=0)
esempio completa:
In [1]: df = pd.DataFrame(np.random.randint(10, size=(3,1)), columns=['A'])
In [1]: df
Out[1]:
A
0 4
1 7
2 0
In [2]: df.reindex(columns=[*df.columns.tolist(), 'col1', 'col2'], fill_value=0)
Out[2]:
A col1 col2
0 1 0 0
1 2 0 0
E, se il numero ha già una lista, con i nomi delle colonne,:
In [3]: my_cols_list=['col1','col2']
In [4]: df.reindex(columns=[*df.columns.tolist(), *my_cols_list], fill_value=0)
Out[4]:
A col1 col2
0 1 0 0
1 2 0 0
fonte
2017-07-06 14:11:58
Grazie, è possibile che mi manca qualcosa, ma ho aggiunto 'pd.concat ([DF, pd.DataFrame (colonne = lista ('BCD'))]) '- non fa niente afaik. Potrebbe essere dovuto al fatto che io uso 'df = pd.read_csv' e non' df = pd.DataFrame'? – Winterflags
È necessario assegnare il risultato della concat così 'df = pd.concat ([df, pd.DataFrame (columns = list ('BCD'))])' – EdChum
Grazie, ha funzionato. Posso aggiungere le colonne all'ultima colonna? Le nuove colonne vengono aggiunte all'inizio. Sembra che concat stia eseguendo il riordino automatico perché anche le mie colonne originali vengono spostate. – Winterflags