【问题标题】:Pandas DatetimeIndex truncate errorPandas DatetimeIndex 截断错误
【发布时间】:2013-01-15 18:40:56
【问题描述】:

我有一个熊猫数据框df

Out[16]:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 269850 entries, 2012-12-19 16:15:36 to 2012-12-20 14:36:55
Data columns:
X1    269850  non-null values
X2      269848  non-null values
X3      269848  non-null values
dtypes: float64(2), object(1)

我想对数据框进行切片以返回从 2012-12-20 05:00:002012-12-20 09:00:00 的四小时数据窗口

当我尝试时:

Slicedf = df.truncate(before='12/20/2012 05:00:00',after='12/20/2012 09:00:00')

出现以下错误:

KeyError: datetime.datetime(2012, 12, 20, 5, 0)

我也试过(来自Pandas DataFrame slicing by day/hour/minute):

from datetime import datetime
x=datetime(2012,12,20,5,0,0)
y=datetime(2012,12,20,9,0,0)
Slicedf = df.ix[x:y]

返回完全相同的错误。

【问题讨论】:

  • 你用的是什么版本的熊猫?
  • 奇怪了,能更新到0.10.1吗? df1 = df.head() 也会发生这种情况吗?如果可以,您可以粘贴df1.to_dict() 的内容吗? (我很早就尝试了一个虚拟 DataFrame,它工作正常......)
  • 目前使用 0.10.0 df1=df.head() 工作正常。将更新 pandas 并重试。
  • 对不起,我的意思是 df1.truncate(..)df1.ix[x:y] 工作正常吗?

标签: python pandas slice


【解决方案1】:

您可能需要将其更改为:

df = df.sort_values()df = df.sort_index() 在 truncate 函数之前,以便修复更高版本的 Pandas 中的错误。

所以你的代码看起来像:df = df.sort_index().truncate(before='12/20/2012 05:00:00', after='12/20/2012 09:00:00')

sort 在 DataFrames 中被弃用,取而代之的是需要使用 sort_valuessort_index。您可以分别在文档herehere 中找到有关它们的更多详细信息。

【讨论】:

    【解决方案2】:

    df 是通过使用concat 函数将多个数据帧连接在一起而创建的。

    df = df.sort() 在截断之前修复了错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-06
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-22
      • 2023-04-03
      • 2016-08-06
      相关资源
      最近更新 更多