df.rename has a parameter called columns
that accepts dictionaries:
df.rename(columns=dict(zip(df2["val1"], df2["val2"])))
Out:
A7 B0 C3 D1
0 1 2 3 4
1 5 6 7 8
It returns a new DataFrame. You can either use inplace=True
, or assign it back to the original DataFrame.