[FIXED] Sortieren von Daten aus einem Datenrahmen in ein bestimmtes Format mit Pandas Python

Ausgabe

Ich habe einen unten erwähnten Datenrahmen, der aus einer unstrukturierten TXT-Datei extrahiert wurde. Datei. Ich benötige es sortiert wie unten erwähnt Beispielformat in der genauen Reihenfolge. Bitte beachten Sie auch, dass bei der Erfassung des Datums nur das Datum neben (oder nach) TDY erfasst werden sollte.

Bitte beachten Sie, dass dies eine vereinfachte Version des Datenrahmens ist und die Daten für 3 Monate bestehen bleiben.

Dummy-Anfangs-TXT-Datei
https://drive.google.com/drive/u/0/folders/1CRzCMRo_TV2B-6ZDPA0kb7S7DGuDg7IY

Datenrahmen

0 5 36 43 79
1 TDY 01.JUN.2022 1.2 Tom 1.2
2 SPT 05. JUNI 2022 1.4 1 WOCHE 1.4
3 2 WOCHEN 01.JUN.2022 1.5 1MO 1.6
4 2MO 06. JUNI 2022 1.7 3MO 1.7
5 6MO 01.JUN.2022 1.4 9MO 1.8
6 1 Jahr 01.JUN.2022 1.7 2 Jahre 1.3
7 3 Jahre 01.JUN.2022 1.2 4 Jahre 1.2
8 5 Jahre 01.JUN.2022 1.4 6 Jahre 1.4
9 TDY 02. JUNI 2022 1.2 Tom 1.2
10 SPT 02. JUNI 2022 1.4 1 WOCHE 1.4
11 2 WOCHEN 07. JUNI 2022 1.5 1MO 1.6
12 2MO 02. JUNI 2022 1.7 3MO 1.7
13 6MO 02. JUNI 2022 1.4 9MO 1.8
14 1 Jahr 02. JUNI 2022 1.7 2 Jahre 1.3
fünfzehn 3 Jahre 02. JUNI 2022 1.2 4 Jahre 1.2
16 5 Jahre 07. JUNI 2022 1.4 6 Jahre 1.4
17 TDY 03.JUN.2022 1.2 Tom 1.2
18 SPT 03.JUN.2022 1.4 1 WOCHE 1.4
19 2 WOCHEN 03.JUN.2022 1.5 1MO 1.6
20 2MO 09.06.2022 1.7 3MO 1.7
21 6MO 03.JUN.2022 1.4 9MO 1.8
22 1 Jahr 02. JUNI 2022 1.7 2 Jahre 1.3
23 3 Jahre 03.JUN.2022 1.2 4 Jahre 1.2
24 5 Jahre 03.JUN.2022 1.4 6 Jahre 1.4

Ausgabe erforderlich

Datum TDY Tom SPT 1 WOCHE 2 WOCHEN 1MO 2MO 3MO 6MO 9MO 1 Jahr 2 Jahre 3 Jahre 4 Jahre 5 Jahre 6 Jahre
01.JUN.2022 1.2 1.2 1.4 1.4 1.5 1.6 1.7 1.7 1.4 1.8 1.7 1.3 1.2 1.2 1.4 1.4
02. JUNI 2022 1.2 1.2 1.4 1.4 1.5 1.6 1.7 1.7 1.4 1.8 1.7 1.3 1.2 1.2 1.4 1.4
03.JUN.2022 1.2 1.2 1.4 1.4 1.5 1.6 1.7 1.7 1.4 1.8 1.7 1.3 1.2 1.2 1.4 1.4

Lösung

Sie sind sich nicht sicher, ob Sie dieses Datumsformat beibehalten möchten oder nicht?

dates_df = pd.to_datetime(df.loc[df["0"] == "TDY"]["5"]).reset_index(drop=True)

column_order = ["TDY", "TOM", "SPT", "1WK", "2WK", "1MO", "2MO", "3MO",
                "6MO", "9MO", "1YR", "2YR", "3YR", "4YR", "5YR", "6YR"]

header_df = df[["0", "43"]].melt(value_name="headers")
value_df = df[["36", "79"]].melt(value_name="values")
melted_df = pd.concat([header_df, value_df], axis=1)[["headers", "values"]]

grouped_mapping = melted_df.groupby("headers")["values"].apply(list).to_dict()
grouped_df = pd.DataFrame(grouped_mapping).reindex(columns=column_order)

final_df = pd.merge(dates_df, grouped_df, left_index=True, right_index=True).rename(columns={"5": "Dates"})
print(final_df)

       Dates  TDY  TOM  SPT  1WK  2WK  1MO  ...  9MO  1YR  2YR  3YR  4YR  5YR  6YR
0 2022-06-01  1.2  1.2  1.4  1.4  1.5  1.6  ...  1.8  1.7  1.3  1.2  1.2  1.4  1.4
1 2022-06-02  1.2  1.2  1.4  1.4  1.5  1.6  ...  1.8  1.7  1.3  1.2  1.2  1.4  1.4
2 2022-06-03  1.2  1.2  1.4  1.4  1.5  1.6  ...  1.8  1.7  1.3  1.2  1.2  1.4  1.4


Beantwortet von –
Jason Baker


Antwort geprüft von –
Jay B. (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like