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)