Вы можете использовать столбец "дата" в качестве индекса перед объединением.
df1 = pd.DataFrame({'value': [1,2,3,4,5], 'date': [20,40,60,80,100]})
df2 = pd.DataFrame({'value': [11,21,31,41,51], 'date': [20,40,60,80,100]})
df3 = pd.concat([df1.set_index("date"), df2.set_index("date")], keys=['df1','df2'], axis=1)
df3.plot()
Это создает фрейм данных только с двумя столбцами «значение» и датой в качестве индекса.
При построении индекса используется значение x, и для каждого столбца рисуется линия.
![enter image description here](https://i.stack.imgur.com/qfJuE.png)
Вы также можете игнорировать игнорирование индекса столбца и позже установить новые имена столбцов
df3 = pd.concat([df1.set_index("date"), df2.set_index("date")], axis=1, ignore_index =True)
df3.columns=['df1','df2']
![enter image description here](https://i.stack.imgur.com/1ADao.png)
Или вы сбрасываете уровень индекса, который является общим для обоих столбцов после объединения.
df3 = pd.concat([df1.set_index("date"), df2.set_index("date")], keys=['df1','df2'], axis=1)
df3.columns = df3.columns.droplevel(level=1)