【问题标题】:Difference between parse_date=[0] and parse_date=True in pandas.read_csvpandas.read_csv 中 parse_date=[0] 和 parse_date=True 之间的区别
【发布时间】:2012-08-21 17:07:30
【问题描述】:

这段代码:

import pandas as pd
from StringIO import StringIO

data = "date,c1\n2012-07-31 02:00,1.1\n2012-07-31 02:15,2.2\n2012-07-31 02:30,3.3\n"

df1 = pd.read_csv(StringIO(data),parse_dates=True).set_index(('date'))
df2 = pd.read_csv(StringIO(data),parse_dates=[0] ).set_index(('date'))

print "df1:\n{index}".format(index=df1.index)
print "df2:\n{index}".format(index=df2.index)

返回:

df1:
array([2012-07-31 02:00, 2012-07-31 02:15, 2012-07-31 02:30], dtype=object)
df2:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-07-31 02:00:00, ..., 2012-07-31 02:30:00]
Length: 3, Freq: None, Timezone: None

df1 和 df2 之间的差异是错误、功能还是我误解了什么?

【问题讨论】:

    标签: pandas


    【解决方案1】:

    对我来说似乎是一个错误。我为此创建了一个issue

    请注意,通过使用 *index_col* 参数可以设置索引。

    In [15]: df = pd.read_csv(StringIO(data),parse_dates=[0], index_col=0)
    
    In [15]: df.index
    <class 'pandas.tseries.index.DatetimeIndex'>
    [2012-07-31 02:00:00, ..., 2012-07-31 02:30:00]
    Length: 3, Freq: None, Timezone: None
    

    【讨论】:

      【解决方案2】:

      如果parse_dates=True,阅读器将尝试将索引解析为日期时间(参见文档:http://pandas.pydata.org/pandas-docs/stable/io.html)。而且由于您没有在原始调用中设置索引,因此它没有尝试解析它。

      这将起作用:

      In [237]: df1 = pd.read_csv(StringIO(data),parse_dates=True, index_col=0)
      
      In [238]: df1
      Out[238]: 
                            c1
      date                    
      2012-07-31 02:00:00  1.1
      2012-07-31 02:15:00  2.2
      2012-07-31 02:30:00  3.3
      
      In [239]: df1.index
      Out[239]: 
      <class 'pandas.tseries.index.DatetimeIndex'>
      [2012-07-31 02:00:00, ..., 2012-07-31 02:30:00]
      Length: 3, Freq: None, Timezone: None
      

      【讨论】:

      • 有趣,我认为文档在说不同的东西。 “真 -> 尝试解析所有列 [1, 2, 3]” 在 doc/pandas.io.parsers.read_csv
      • 看起来文档字符串与在线熊猫文档不一致。我会尽快解决的。
      猜你喜欢
      • 2020-11-16
      • 2016-12-11
      • 2022-10-04
      • 2020-02-16
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2015-01-06
      • 2016-01-08
      相关资源
      最近更新 更多