Ausgabe
Ich habe 2 Pandas-Datenrahmen, von denen einer Spaltennamen auflistet, die ich im anderen auswählen möchte, wenn ich ihn durch eine Schleife laufen lasse.
Zum Beispiel:
df1 :
ausgewählte Spalte 1 | ausgewählte Spalte 2 |
---|---|
EIN | C |
B | C |
df2
EIN | B | C | D |
---|---|---|---|
Wert | Wert | Wert | Wert |
Wert | Wert | Wert | Wert |
Ich möchte: (erster Lauf):
EIN | C |
---|---|
Wert | Wert |
Wert | Wert |
(zweiter Lauf)
B | C |
---|---|
Wert | Wert |
Wert | Wert |
Lösung
Wenn Sie keine Iterrows verwenden möchten (im Allgemeinen verpönt, wenn Sie mit DataFrames arbeiten), können Sie die DataFrames mit Verständnis wie folgt erstellen:
records = [
{
'A': 'A1', 'B': 'B1', 'C': 'C1', 'D': 'D1'
},
{
'A': 'A2', 'B': 'B2', 'C': 'C2', 'D': 'D2'
}
]
selectors = [
{'C1': 'A', 'C2': 'C'},
{'C1': 'B', 'C2': 'C'}
]
data_df = pd.DataFrame.from_records(records)
sel_df = pd.DataFrame.from_records(selectors)
#.T transposes the dataframe and gives us the rowindexes to use in iloc
dfs = [pd.DataFrame(data=data_df, columns=x) for x in [sel_df.iloc[s] for s in sel_df.T]]
for df in dfs:
print(df)
Beantwortet von – Allan Elder
Antwort geprüft von – Jay B. (FixError Admin)