Zusammenführen mehrere Datenrahmen entlang einer Zeitreihe Index mit der gleichen Startzeit und die gleichen Zielzeit, aber unterschiedlichen Längen

stimmen
0

Ive, das mich über diese zu schlagen. Obwohl ich glaube, ich habe es richtig bin ich nicht überzeugt und möchte meine Lösung teilen für jemanden, mir zu sagen, ja oder nein?

Ich möchte mehrere Datenrahmen entlang einer Zeitreihe Index mit der gleichen Startzeit und Endzeit beitreten, aber jeder Datenrahmen ist eine andere Länge. Ich würde dann gewährleisten möge, dass alle Brüche in der Zeitreihe für die fehlende Zeitstempel neu ausgerichtet und die fehlenden Werte werden in dem ursprünglichen Datenrahmen auf die Daten vorwärts relevant gepolstert.

DataFrame1
Time    O   H   L   C   Symbol
00:00:00    2   3   1   1   XXX/XXX
01:00:00    1   4   1   1   XXX/XXX
02:00:00    1   4   1   1   XXX/XXX
03:00:00    1   4   1   1   XXX/XXX
04:00:00    2   3   1   1   XXX/XXX
05:00:00    1   3   1   1   XXX/XXX
06:00:00    1   3   1   1   XXX/XXX
07:00:00    2   4   1   1   XXX/XXX
08:00:00    2   3   1   1   XXX/XXX
09:00:00    1   4   1   1   XXX/XXX
10:00:00    1   3   1   1   XXX/XXX
11:00:00    2   4   1   1   XXX/XXX
12:00:00    1   4   1   1   XXX/XXX
13:00:00    2   3   1   1   XXX/XXX
14:00:00    2   4   1   1   XXX/XXX

Len = 15

DataFrame2:

Time    O   H   L   C   Symbol
00:00:00    2   3   1   1   XXX/YYY
01:00:00    1   4   1   1   XXX/YYY
02:00:00    1   4   1   1   XXX/YYY
03:00:00    1   4   1   1   XXX/YYY
04:00:00    2   3   1   1   XXX/YYY
06:00:00    1   3   1   1   XXX/YYY
07:00:00    1   3   1   1   XXX/YYY
08:00:00    2   4   1   1   XXX/YYY
09:00:00    2   3   1   1   XXX/YYY
10:00:00    1   4   1   1   XXX/YYY
12:00:00    1   3   1   1   XXX/YYY
13:00:00    2   4   1   1   XXX/YYY
14:00:00    1   4   1   1   XXX/YYY

LEN = 13

DataFrame3:

Time    O   H   L   C   Symbol
00:00:00    2   3   1   1   XXX/ZZZ
02:00:00    1   4   1   1   XXX/ZZZ
03:00:00    1   4   1   1   XXX/ZZZ
04:00:00    1   4   1   1   XXX/ZZZ
05:00:00    2   3   1   1   XXX/ZZZ
06:00:00    1   3   1   1   XXX/ZZZ
07:00:00    1   3   1   1   XXX/ZZZ
08:00:00    2   4   1   1   XXX/ZZZ
10:00:00    1   4   1   1   XXX/ZZZ
11:00:00    1   3   1   1   XXX/ZZZ
12:00:00    2   4   1   1   XXX/ZZZ
14:00:00    1   4   1   1   XXX/ZZZ

Len = 12

Das Endergebnis sollte darauf abzielen , zu sein: Datenrahmen ausgerichtet , die alle Daten zeigen jedoch vor der Unterbreitung Klotzen

Time    O   H   L   C   Symbol      Time    O   H   L   C   Symbol      Time    O   H   L   C   Symbol
00:00:00    2   3   1   1   XXX/XXX     00:00:00    2   3   1   1   XXX/YYY     00:00:00    2   3   1   1   XXX/ZZZ
01:00:00    1   4   1   1   XXX/XXX     01:00:00    1   4   1   1   XXX/YYY     01:00:00    nan nan nan nan nan
02:00:00    1   4   1   1   XXX/XXX     02:00:00    1   4   1   1   XXX/YYY     02:00:00    1   4   1   1   XXX/ZZZ
03:00:00    1   4   1   1   XXX/XXX     03:00:00    1   4   1   1   XXX/YYY     03:00:00    1   4   1   1   XXX/ZZZ
04:00:00    2   3   1   1   XXX/XXX     04:00:00    2   3   1   1   XXX/YYY     04:00:00    1   4   1   1   XXX/ZZZ
05:00:00    1   3   1   1   XXX/XXX     05:00:00    nan nan nan nan nan     05:00:00    2   3   1   1   XXX/ZZZ
06:00:00    1   3   1   1   XXX/XXX     06:00:00    1   3   1   1   XXX/YYY     06:00:00    1   3   1   1   XXX/ZZZ
07:00:00    2   4   1   1   XXX/XXX     07:00:00    1   3   1   1   XXX/YYY     07:00:00    1   3   1   1   XXX/ZZZ
08:00:00    2   3   1   1   XXX/XXX     08:00:00    2   4   1   1   XXX/YYY     08:00:00    2   4   1   1   XXX/ZZZ
09:00:00    1   4   1   1   XXX/XXX     09:00:00    2   3   1   1   XXX/YYY     09:00:00    nan nan nan nan nan
10:00:00    1   3   1   1   XXX/XXX     10:00:00    1   4   1   1   XXX/YYY     10:00:00    1   4   1   1   XXX/ZZZ
11:00:00    2   4   1   1   XXX/XXX     11:00:00    nan nan nan nan nan     11:00:00    1   3   1   1   XXX/ZZZ
12:00:00    1   4   1   1   XXX/XXX     12:00:00    1   3   1   1   XXX/YYY     12:00:00    2   4   1   1   XXX/ZZZ
13:00:00    2   3   1   1   XXX/XXX     13:00:00    2   4   1   1   XXX/YYY     13:00:00    nan nan nan nan nan
14:00:00    2   4   1   1   XXX/XXX     14:00:00    1   4   1   1   XXX/YYY     14:00:00    1   4   1   1   XXX/ZZZ

Der Ansatz, den ich gemacht habe, ist: Für jeden Datenrahmen entlang des Index der Zeit concat

> table =
> DataTableEurUsd.reset_index(Time).join(DataTableAudUsd.reset_index(Time),
> lsuffix=_y, rsuffix=_x).join(DataTableEurChf.reset_index(Time),
> lsuffix=_y, rsuffix=_x)

Woher:

DataTableEurUsd =
        Open    High    Low Close   RealVolume  Spread  TickVolume  Symbol
    Time                                
    2010.01.04 00:00:00 1.43259 1.43336 1.43151 1.43153 0.0 12.0    969.0   EURUSD
    2010.01.04 01:00:00 1.43151 1.43153 1.42879 1.42886 0.0 15.0    2098.0  EURUSD
    2010.01.04 02:00:00 1.42885 1.42885 1.42569 1.42705 0.0 15.0    2082.0  EURUSD
    2010.01.04 03:00:00 1.42702 1.42989 1.42700 1.42939 0.0 14.0    1544.0  EURUSD
    2010.01.04 05:00:00 1.42938 1.42968 1.42718 1.42848 0.0 15.0    1131.0  EURUSD

DataTableAudUsd =
        Open    High    Low Close   RealVolume  Spread  TickVolume  Symbol
    Time                                
    2010.01.04 00:00:00 0.89938 0.89953 0.89709 0.89711 0.0 30.0    1144.0  AUDUSD
    2010.01.04 01:00:00 0.89712 0.89795 0.89612 0.89632 0.0 35.0    1735.0  AUDUSD
    2010.01.04 02:00:00 0.89634 0.89645 0.89372 0.89500 0.0 30.0    1771.0  AUDUSD
    2010.01.04 04:00:00 0.89502 0.89653 0.89502 0.89613 0.0 35.0    1242.0  AUDUSD
    2010.01.04 05:00:00 0.89611 0.89648 0.89479 0.89633 0.0 30.0    663.0   AUDUSD

DataTableEurChf =

    Open    High    Low Close   RealVolume  Spread  TickVolume  Symbol
Time                                
2010.01.04 00:00:00 1.48238 1.48354 1.48227 1.48334 0.0 36.0    1232.0  EURCHF
2010.01.04 02:00:00 1.48327 1.48470 1.48087 1.48250 0.0 34.0    2186.0  EURCHF
2010.01.04 03:00:00 1.48251 1.48311 1.48150 1.48294 0.0 34.0    1939.0  EURCHF
2010.01.04 04:00:00 1.48292 1.48317 1.48114 1.48239 0.0 34.0    1510.0  EURCHF
2010.01.04 05:00:00 1.48235 1.48245 1.48150 1.48181 0.0 34.0    1230.0  EURCHF

Dann werde ich Pad nach vorn auf dem Nan

table = table.fillna(method='ffill')

Ich mag die ursprünglichen Daten bleiben sicher , dass alle in der richtigen Stelle machen und die Zeitreihe Index füllt die fehlenden Stunden auf dem Index wie in dem Excel - Screenshot die ich geschrieben habe.
Ist dies nicht klar ist , bin ich glücklich , mehr Informationen , um es zu helfen , zu erklären.

Schöne Grüße,

Veröffentlicht am 18/12/2018 um 11:13
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more