Я знаю, что эта тема уже обсуждалась, но не так конкретно, как мне нужно в моем случае
Допустим, у меня есть 4 кадра данных с одинаковыми столбцами, но разными временными диапазонами (строками). Я установил дату в качестве индекса и хотел бы объединить кадры данных в один новый. Для этого я поместил кадры данных в список и попытался соединить их в цикле, но не могу заставить его работать.
При выполнении я получаю следующую ошибку:
ValueError: столбцы перекрываются, но суффикс не указан: индекс (['attr1', 'attr2'], dtype = 'object'
По умолчанию "join" должен присоединяться к индексу, поэтому мне интересно, почему возникает эта ошибка?!
Любая помощь будет принята с благодарностью. Заранее спасибо.
Вот код:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.array([
['2019-04-29', 5, 9],
['2019-04-28', 4, 61],
['2019-04-27', 24, 9]]),
columns=['Date', 'attr1', 'attr2'])
df1 = df1.set_index(['Date'])
df2 = pd.DataFrame(np.array([
['2019-04-25', 5, 19],
['2019-04-24', 14, 16],
['2019-04-23', 4, 9]]),
columns=['Date', 'attr1', 'attr2'])
df2 = df2.set_index(['Date'])
df3 = pd.DataFrame(np.array([
['2019-04-29', 15, 49],
['2019-04-25', 4, 36],
['2019-04-23', 14, 9]]),
columns=['Date', 'attr1', 'attr2'])
df3 = df3.set_index(['Date'])
df4 = pd.DataFrame(np.array([
['2019-04-29', 15, 49],
['2019-04-10', 4, 36],
['2019-04-5', 14, 9]]),
columns=['Date', 'attr1', 'attr2'])
df4 = df4.set_index(['Date'])
dfs = [df1, df2, df3, df4]
for df in (dfs):
df.join(df, how='outer')
Требуемый формат выглядит следующим образом:
df5 = pd.DataFrame(np.array([
['2019-04-29', 15, 49, 5, 19, 15, 49, 15, 49],
['2019-04-10', 4, 36, 14, 16, 4, 36, 4, 36],
['2019-04-5', 14, 9, 4, 36, 4, 36, 4, 36]]),
columns=['Date', 'attr1_x', 'attr2_x', 'attr1_y', 'attr2_y', 'attr1_z', 'attr2_z', 'attr1_v', 'attr2_v'])
df5 = df5.set_index(['Date'])