Es scheint mir seltsam, dass pandas.read_csv
keine direkte reziproke Funktion zu df.to_csv
ist. Beachten Sie in dieser Abbildung, wie sich bei Verwendung aller Standardeinstellungen die ursprünglichen und endgültigen DataFrames durch die Spalte "Unbenannt" unterscheiden.Warum ist `pandas.read_csv` nicht das Gegenstück von` pandas.DataFrame.to_csv`?
In [1]: import pandas as pd
In [2]: orig_df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]}); orig_df
Out[2]:
AAA BBB CCC
0 4 10 100
1 5 20 50
2 6 30 -30
3 7 40 -50
[4 rows x 3 columns]
In [3]: orig_df.to_csv('test.csv')
In [4]: final_df = pd.read_csv('test.csv'); final_df
Out[4]:
Unnamed: 0 AAA BBB CCC
0 0 4 10 100
1 1 5 20 50
2 2 6 30 -30
3 3 7 40 -50
[4 rows x 4 columns]
Es scheint, die Standard-read_csv
statt
In [6]: final2_df = pd.read_csv('test.csv', index_col=0); final2_df
Out[7]:
AAA BBB CCC
0 4 10 100
1 5 20 50
2 6 30 -30
3 7 40 -50
[4 rows x 3 columns]
oder die Standard-to_csv
statt
In [8]: df.to_csv('test2.csv', index=False)
, die beim Lesen gibt
In [9]: pd.read_csv('test2.csv')
Out[9]:
AAA BBB CCC
0 4 10 100
1 5 20 50
2 6 30 -30
3 7 40 -50
[4 Zeilen x 3 Spalten]
(Vielleicht sollte dies stattdessen an die Entwickler gesendet werden, aber ich bin wirklich interessiert, warum dies das Standardverhalten ist. Hoffentlich kann es auch anderen helfen, die Verwirrung zu vermeiden, die ich hatte).
Ich denke, es ist vor, weil, wenn Sie verwendet 'pd.DataFrame.from_csv' der Standard in der Tat war, dass' index_col = 0 'aber dies verursacht alle Arten von Chaos als csv die haben alle Arten von seltsamen Formaten so ist dieses Verhalten anders als 'read_csv'. Es ist ein guter Punkt und etwas, das es wert ist, als Verbesserung für [github] gepostet zu werden (https://github.com/pydata/pandas/issues) – EdChum
Sagen wir, dass das reziproke ['from_csv'] ist (http: //pandas.pydata .org/pandas-docs/stable/generierte/pandas.DataFrame.from_csv.html # pandas.DataFrame.from_csv) aber es ist nicht mehr zu Gunsten der allgemeinen 'read_table' und' read_csv' aktualisiert, die mehr Flexibilität haben – EdChum
Ich habe dies gelernt Der harte Weg mit read_excel, da es keinen Roundtrip gibt, zum Beispiel, wenn du ein multi-indexed Excel speicherst, wirst du es schwer haben, es wieder in einen Datenrahmen zu bekommen – Skorpeo