Мне кажется странным, что pandas.read_csv
не является прямой обратной функцией df.to_csv
. На этой иллюстрации обратите внимание, что при использовании всех настроек по умолчанию исходный и последний DataFrames отличаются столбцом "Без имени".
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]
Кажется, что по умолчанию read_csv
должен быть
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]
или значение по умолчанию to_csv
должно быть
In [8]: df.to_csv('test2.csv', index=False)
который при чтении дает
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 строки x 3 столбца]
(Возможно, это должно быть отправлено разработчику, но я искренне интересуюсь, почему это поведение по умолчанию. Надеюсь, это также поможет кому-то избежать недоразумений, которые у меня были).