У меня есть несколько кадров данных с ценами на акции, которые я хочу выровнять в единый кадр данных, который содержит только тесные цены для всех акций.Слияние нескольких неустановленных кадров данных в один кадр данных pandas
Я бы ожидал, что все даты из всех кадровых фреймов будут присутствовать в столбце даты (индексе) и «NA» в случае отсутствия цены закрытия акций на эту дату.
Пример с двумя данными ТФ (df1 и df2):
In [5]: df1
Out[5]:
Open High Low Close
Date1
2012-01-05 22.00 22.66 23.11 24.04
2012-01-04 24.04 23.80 23.08 22.16
2012-01-03 22.16 21.27 20.42 21.24
2012-01-01 21.24 22.30 22.52 22.30
In [7]: df2
Out[7]:
Open High Low Close
Date1
2012-01-07 23.00 21.66 25.11 21.04
2012-01-06 22.00 22.66 23.11 24.04
2012-01-04 24.04 23.80 23.08 22.16
2012-01-02 22.16 21.27 20.42 21.24
2012-01-01 21.24 22.30 22.52 22.30
Теперь я могу сделать
In [8]: frame=pd.DataFrame({"df1.Close":df1["Close"], "df2.Close":df2["Close"]})
и результат, как и ожидалось:
In [9]: frame
Out[9]:
df1.Close df2.Close
Date1
2012-01-01 22.30 22.30
2012-01-02 NaN 21.24
2012-01-03 21.24 NaN
2012-01-04 22.16 22.16
2012-01-05 24.04 NaN
2012-01-06 NaN 24.04
2012-01-07 NaN 21.04
Как Мне нужно изменить мой код, чтобы сделать то же самое для динамического числа кадров данных? Прямо сейчас у меня есть 8 кадров данных, которые мне нужно согласовать. Есть ли какой-либо способ петли через список кадров данных и выровнять их, как указано выше, вместо того, чтобы вручную связывать имена фреймов данных (что-то вроде df [0] с df [7] образно говоря)?
Заранее благодарен! Dirk
Очень круто, спасибо большое! В этом примере я на полпути. Теперь, как я могу сделать динамику dflist? Я не буду знать, сколько кадров данных мне понадобится, поэтому я предполагаю, что я ищу способ создания нескольких кадров данных динамически, а затем использовать ваш код. Большое спасибо за Вашу помощь! – user1653205
Просто используйте стандартные методы обработки списка, такие как 'append()' - так, например, когда вы получаете новый кадр данных, сделайте что-то вроде 'dflist.append (new_df)'. – rmunn
Думаю, я приближаюсь. Я теперь загрузил dataframes в dict, где ключ является тикером акции, а значение - это dataframe с котировками OHLC для акций. Теперь у меня есть dict с 8 парами ключ/значение. Остается вопрос: как подключиться к данным в один, итерации через мой dict? – user1653205