Mam wiele ramek danych z cenami akcji, które chcę dopasować do pojedynczej ramki danych, która zawiera tylko ceny zamknięcia wszystkich zasobów.Scalanie wielu niepowiązanych ramek danych w jedną pandę danych-ramka
Oczekuję, że wszystkie daty ze wszystkich ramek danych będą obecne w kolumnie (indeksie) i "NA" w przypadku, gdy w tym dniu nie było ceny zamknięcia dla akcji.
Przykład z dwóch danych ramek (DF1 i 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
Teraz mogę zrobić
In [8]: frame=pd.DataFrame({"df1.Close":df1["Close"], "df2.Close":df2["Close"]})
a wynik jest zgodnie z oczekiwaniami:
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
Jak Muszę zmienić kod, aby zrobić to samo dla dynamicznej liczby ramek danych? W tej chwili mam 8 ramek danych, które muszę wyrównać w ten sposób. Czy istnieje sposób przechwycenia listy ramek danych i wyrównania ich tak jak powyżej - zamiast ręcznego wiązania nazw ramek danych (coś w stylu df [0] do df [7] mówiąc w przenośni)?
Z góry dziękuję i życzę! Dirk
Bardzo fajne, wielkie dzięki! Na tym przykładzie jestem w połowie drogi. Jak mogę sprawić, aby "dflist" był dynamiczny? Nie będę wiedział z góry, ile ramek danych będę potrzebował - więc domyślam się, że szukam sposobu na dynamiczne utworzenie pewnej liczby ramek danych, a następnie użycie twojego kodu. Dziękuję bardzo za Twoją pomoc! – user1653205
Wystarczy użyć standardowych metod manipulacji listą, takich jak 'append()' - więc na przykład, gdy otrzymasz nową ramkę danych, zrób coś w stylu 'dflist.append (new_df)'. – rmunn
Myślę, że jestem coraz bliżej. Załadowałem teraz ramkę danych do dyktafonu, w którym kluczem jest znacznik zasobu, a wartością jest ramka danych z cytatami OHLC dla zasobu. Teraz mam dykta z 8 parami klucz/wartość. Pozostaje pytanie: Jak dołączyć do ramek danych w jeden przez iterowanie przez mój dyktat? – user1653205