Ich hatte gedacht, dass ein Pandas DataFrame im Grunde als eine Sammlung von Spalten dargestellt wurde. Das heißt, ich dachte, dass die folgenden zwei Codezeilen die gleichen Listen Series (für einige willkürliche Datenrahmen df
) produzieren:Iterieren durch einen Pandas DataFrame ist das gleiche wie Iterating durch seine Spaltennamen?
list1 = [item for item in df]
list2 = [df[col_name] for col_name in df.columns]
Aber anscheinend sind sie sehr verschieden sind; nur eine Liste von Spaltennamen Behandlung der df
wie ein iteratable und tritt durch sie genau die gleichen wie Schreiten durch df.columns
, was natürlich ist:
df = pd.DataFrame({'col_1': [1,2,3,4,5], 'col_2':[5,6,7,8,9]})
for a, b in zip(df, df.columns):
print(a,b, type(a), type(b), a==b)
Ausgänge:
col_1 col_1 <class 'str'> <class 'str'> True
col_2 col_2 <class 'str'> <class 'str'> True
Warum ist das? Das erscheint mir sehr unspektakulär.
(Um klar zu sein: Ich frage nicht, wie man eine Liste der Spalten in einem Datenrahmen zu erhalten, oder wie durch die Spalten eines Datenrahmens zu dem Schritt.)