У меня есть два отдельных кадра данных, и я хотел бы объединить их на основе определенного столбца. Я попытался объединить их, но он просто помещает кадры данных друг на друга. и я пробовал pd.merge, но он дублирует другие столбцы
Вот что у меня есть...
Я хочу что-то похожее на это, где даты объединены, а символы имеют общую дату.
Вот некоторый фиктивный код, если вы хотите реализовать пример
df_msft = [['2020-1-1', 10], ['2020-1-2', 15], ['2020-1-3', 14]]
df1 = pd.DataFrame(df_msft , columns = ['datetime', 'price'])
df_aapl = [['2020-1-1', 10], ['2020-1-2', 15], ['2020-1-3', 14]]
df2 = pd.DataFrame(df_aapl , columns = ['datetime', 'price'])
Что вы подразумеваете под «дублированием других столбцов», когда вы пробовали pd.merge? Какие «другие» столбцы дублируются?
Допустим, я объединил его на основе столбца «datetime», после объединения он будет дублировать столбцы с тем же именем, которые все они, такие как: Ticker_x, Ticker_y
Думаю, я понимаю, что вы имеете в виду. Итак, если в обоих фреймах данных есть столбец с именем high
, то «объединенный» фрейм данных будет иметь два столбца, по одному из каждого из исходных фреймов данных?
Вы можете использовать pd.concat
:
out = pd.concat([df1, df2], keys=['MSFT', 'AAPL']).droplevel(1) \
.rename_axis('symbol').set_index('datetime', append=True) \
.swaplevel().sort_index()
print(out)
# Output
price
datetime symbol
2020-1-1 AAPL 10
MSFT 10
2020-1-2 AAPL 15
MSFT 15
2020-1-3 AAPL 14
MSFT 14
Экспорт в Excel:
out.to_excel('output.xlsx', merge_cells=True)
Вы проверяли мое последнее обновление? Я забыл sort_index
Здесь нужно быть осторожным с разницей между данными в фрейме данных и тем, как эти данные отображаются пользователю. Вы можете легко создать фрейм данных, который повторяет дату в каждой строке, а затем отобразить его в формате таблицы, как показано на снимке экрана.