有什么区别[pandas.read_csv(filename)]和[pandas.DataFrame.from_csv(filename)]

时间:2015-10-16 06:38:49

标签: python pandas dataframe

我有一个数据框,我正在尝试阅读并操纵它。

但是我注意到上述方法之间的区别如下:

myDF = pandas.read_csv(filename)

将为我提供以0到len(myDF)

之间的整数索引的数据帧
    A    B    C    D
0   rr   gg   hh   kk
1   rr   gg   hh   kk
2   rr   gg   hh   kk
3   rr   gg   hh   kk

使用以下方法时:

myDF = pandas.DataFrame.from_csv(filename)

将导致:

     B    C    D
A
rr   gg   hh   kk
rr   gg   hh   kk
rr   gg   hh   kk
rr   gg   hh   kk

很明显,最后一个方法将第一列作为索引。 但我的问题是为什么 这两种方法不应该是一样的吗? 我在这里想念什么?

1 个答案:

答案 0 :(得分:3)

差异在the documentation for DataFrame.from_csv() -

中给出
  

阅读CSV文件( DISCOURAGED ,请改为使用pandas.read_csv())。

     

最好使用功能更强大的pandas.read_csv()用于大多数目的,但是from_csv可以轻松地往返文件(与to_csv完全对应),特别是对于DataFrame时间序列数据。

     

此方法与某些默认值中的首选pandas.read_csv()不同:

     
      
  • index_col为0而不是None(默认情况下将第一列作为索引)
  •   
  • parse_dates为True而不是False(默认情况下尝试将索引解析为datetime)
  •   

(强调我的)

正如您在pandas.read_csv()中看到的那样,index_col默认为None,因此您将0作为索引获得len(DataFrame),而在pandas.DataFrame.from_csv()index_col默认为0,因此默认为第一列。

正如文档中所述,我建议使用功能更强大的pandas.read_csv()而不是pandas.DataFrame.from_csv()