为什么`pandas.read_csv`不是`pandas.DataFrame.to_csv`的倒数?

Ste*_*ell 13 python dataframe pandas

我觉得这pandas.read_csv不是一个直接的互惠函数df.to_csv.在此图中,请注意当使用所有默认设置时,原始和最终DataFrame的区别在于"未命名"列.

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]
Run Code Online (Sandbox Code Playgroud)

似乎默认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]
Run Code Online (Sandbox Code Playgroud)

或者默认to_csv应该是

In [8]: df.to_csv('test2.csv', index=False)
Run Code Online (Sandbox Code Playgroud)

读取时给出的

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
Run Code Online (Sandbox Code Playgroud)

[4行x 3列]

(也许这应该发送给开发人员,但我真的很感兴趣,为什么这是默认行为.希望它也可以帮助别人避免我的困惑).

Ste*_*ell 5

感谢您将提示发布到github页面@EdChum。这使我找到了pandas.DataFrame.from_csv实际上是 的倒数的函数pandas.DataFrame.to_csv

In [6]: final_df = pd.DataFrame.from_csv('test.csv')

In [7]: final_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]
Run Code Online (Sandbox Code Playgroud)

  • 不对。from_csv 调用 read_csv 并定义一些参数 (3认同)