【问题标题】:Pandas - Parsing datetime column from sqlite databasePandas - 从 sqlite 数据库中解析日期时间列
【发布时间】:2012-09-04 08:58:12
【问题描述】:

我目前正在使用一些动手数据探索 python 库 pandas,其中一列包含一个日期时间对象。但是,当使用 DataFrame 方法解析表时,日期列中的日期时间对象被解析为初始值,例如1970-01-16 14:12:28。

例如,如果我有一个包含以下内容的 np.array:

np.array(result, dtype=my_dtype) =
array([ (datetime.datetime(2012, 9, 9, 0, 0), datetime.datetime(2012, 9, 8, 15, 10)),
dtype=[('Date', ('<M8[us]', {})), ('Forecasting', ('<M8[us]', {})),

解析后会返回:

test = pandas.DataFrame(np.array(result, dtype=my_dtype))
test['Date'] =
1970-01-16 14:12:28.800000

test['Forecasting'] =
1970-01-16 14:11:57

这是一个错误,还是我做错了什么?

仅供参考:pandas.version = 0.8.1,numpy.version = 1.6.2 和 Python 2.7.3

【问题讨论】:

    标签: python datetime pandas


    【解决方案1】:

    这是一个错误。在此报告:http://github.com/pydata/pandas/issues/2095

    【讨论】:

      【解决方案2】:

      我不熟悉panda,但我怀疑您为自己的字段选择的dtype 有问题。看起来您使用的是[us],即从纪元(1970-01-01)开始的微秒,而您可能应该使用纪元的days

      另一种可能性是在ndarray 中使用基本的datetime 对象,方法是使用dtype=object

      【讨论】:

      • 是的,这可能是导致解析不正确的原因。我正在使用 np.datetime64 数据类型解析日期时间,但我该怎么做呢?
      • 检查 this link 的 NumPy 和日期时间,尤其是设置频率。请注意,虽然它有效,但它仍然不是 100% 万无一失的。另一种方法是通过选择dtype=object 来创建datetime 对象的ndarray
      • 如果我将 dtype 更改为 object,它实际上可以工作。但我不明白如何通过更改纪元来更改日期时间数据类型? (如日期时间['D'])
      • '&lt;M8[D]' 在你的第一行?
      • 对不起,它不起作用。试过'&lt;M8[D]''np.datetime64[D]'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 2015-11-19
      相关资源
      最近更新 更多