Полагаю, вам нужно add_prefix
для изменения имен столбцов, затем удалите column.name
на rename_axis
и для столбца из индекса добавьте reset_index
:
df1 = df.pivot(index='date', columns='variable', values='value')
df1 = df1.add_prefix(df1.columns.name + '_').rename_axis(None, axis=1).reset_index()
print (df1)
date variable_A variable_B variable_C variable_D
0 2000-01-03 0.469112 -1.135632 0.119209 -2.104569
1 2000-01-04 -0.282863 1.212112 -1.044236 -0.494929
2 2000-01-05 -1.509059 -0.173215 -0.861849 1.071804
EDIT:
Если нужно сгладить MultiIndex в столбцах, используйте list comprehension
:
mux = pd.MultiIndex.from_product([["A", "B", "C", "D"], ["X", "Y"]])
df = pd.DataFrame([np.arange(8)], columns=mux)
print(df)
A B C D
X Y X Y X Y X Y
0 0 1 2 3 4 5 6 7
df.columns = [f"{a}_r{b}" for a, b in df.columns]
print (df)
A_rX A_rY B_rX B_rY C_rX C_rY D_rX D_rY
0 0 1 2 3 4 5 6 7