Ich bin ziemlich neu zu Pandas DataFrame, aber ich habe Tutorials und das Lesen von Dokumentation darüber beobachtet und ich kann nicht vollständig herausfinden, wie ich tun kann, was ich will. Ich habe einen DataFrame, der nach Zeitstempeln indiziert ist, und ich möchte einen bestimmten Zeitraum in eine einzelne Zeile einteilen. Grafisch:Wie erzeuge ich einen neuen Pandas-Datenrahmen, wo ich einige Zeilen in eine neue Spalte komprimiere?
# start date of the series
start_date='20130101'
# range of dates
dates = pd.date_range(start_date, periods=6)
# random dataframe
df = pd.DataFrame([["(1,1)","(1,2)"],
["(2,1)","(2,2)"],
["(3,1)","(3,2)"],
["(4,1)","(4,2)"],
["(5,1)","(5,2)"],
["(6,1)","(6,2)"]], index=dates, columns=list('AB'))
print(df)
# range of bucketing periods, in this case I will get just three periods covering two days each
rng = pd.period_range(start_date, periods=3,freq='2D')
Dies führt zu
A B
2013-01-01 (1,1) (1,2)
2013-01-02 (2,1) (2,2)
2013-01-03 (3,1) (3,2)
2013-01-04 (4,1) (4,2)
2013-01-05 (5,1) (5,2)
2013-01-06 (6,1) (6,2)
Was würde ich tun möchte, ist nun einen neuen Datenrahmen zu erzeugen, wo ich die Perioden in rng = pd.period_range(start_date, periods=3,freq='2D')
als Indizes habe und die Zeilen zu dieser Zeit als aufeinanderfolgende entsprechenden Spalten:
A B A1 B1
2013-01-01 (1,1) (1,2) (2,1) (2,2)
2013-01-03 (3,1) (3,2) (4,1) (4,2)
2013-01-05 (5,1) (5,2) (6,1) (6,2)
gibt es eine Methode in der Api, dass ich diese verwenden kann, zu tun? Ich stelle mir vor, ich brauche auch neue Etiketten wie A1, B1 zu generieren.
Auch nachdem ich ein bisschen mehr dachte, ich kann wahrscheinlich mit
A A1 B B1
2013-01-01 (1,1) (2,1) (1,2) (2,2)
2013-01-03 (3,1) (4,1) (3,2) (4,2)
2013-01-05 (5,1) (6,1) (5,2) (6,2)
Wie werden die Zeiträume festgelegt? –
Die Zeiträume stammen aus dem oben definierten Zeitraumbereich. Ich nehme es als eine 2d Periode für dieses Beispiel. – Paco
Ich frage, weil was Sie wollen, kann durch eine einfache Umgestaltung erreicht werden: 'pd.DataFrame (np.reshape (df.values, (-1, 4)))' –