【问题标题】:Pandas date_range returns no values熊猫 date_range 不返回任何值
【发布时间】:2019-06-26 11:10:10
【问题描述】:

我目前面临关于 pandas date_range 的问题。我在 datetime64[ns] 类型中有 2 个日期。开始日期和结束日期。我正在尝试创建一个包含这两个日期之间的 date_range 值的数据框,作为索引。但是,创建的数据框是空的,即使它应该包含值。

请注意,当我复制粘贴该代码并在网站的英文版中使用它时,它运行良好。我正面临着希腊人的挑战。

我写的代码是:

customdatedf = pd.DataFrame(index = pd.date_range(start, end, freq='D'))

开始和结束日期是从另一个数据框定义的,如下所示:

start = df['Date'].iloc[0]
end = df['Date'].iloc[-1]

并且它们的值被正确返回,就像它出现在

中一样
print(start, end)

(时间戳('2019-07-06 00:00:00'), 时间戳('2019-06-26 00:00:00'))

这是打印出来的

预期结果是一个数据框,其索引为开始日期和结束日期之间的日期

【问题讨论】:

  • 因为你设置为索引,你可以试试例如:customdatedf = pd.DataFrame({'Date' : pd.date_range(start, end, freq='D')})
  • 我希望它是一个索引,但你是对的。这通常会起作用。但是,例如,当我输入 print(customdatedf.head(5)) 时,它会返回 Empty 数据框,而在 print(customdatedf.info()) 上,它会返回 Range index 0 entriesDate 0 non-null datetime64[ns]
  • 如果你希望它是一个索引,添加包含一些数据的列,这样你的数据框是可打印的。

标签: python pandas dataframe datetime


【解决方案1】:

显然您在使用 startend 变量时犯了一个错误。由于开始是结束变量之后,所以要解决这个问题,把它们转过来:

start = pd.Timestamp('2019-07-06 00:00:00') 
end = pd.Timestamp('2019-06-26 00:00:00')

pd.DataFrame({'Col_dummy':['Dummy']}, index=pd.date_range(end, start, freq='D'))

           Col_dummy
2019-06-26     Dummy
2019-06-27     Dummy
2019-06-28     Dummy
2019-06-29     Dummy
2019-06-30     Dummy
2019-07-01     Dummy
2019-07-02     Dummy
2019-07-03     Dummy
2019-07-04     Dummy
2019-07-05     Dummy
2019-07-06     Dummy

或者如果你只想要index

pd.DataFrame(index=pd.date_range(end, start, freq='D'))

Empty DataFrame
Columns: []
Index: [2019-06-26 00:00:00, 2019-06-27 00:00:00, 2019-06-28 00:00:00, 2019-06-29 00:00:00, 2019-06-30 00:00:00, 2019-07-01 00:00:00, 2019-07-02 00:00:00, 2019-07-03 00:00:00, 2019-07-04 00:00:00, 2019-07-05 00:00:00, 2019-07-06 00:00:00]

【讨论】:

  • 是的!我太忙于四处张望,我没有注意到这一点......谢谢大家
【解决方案2】:

也许您可以将index 更改为data

customdatedf = pd.DataFrame(data = pd.date_range(start, end, freq='D'))

请注意,列名将采用默认值0

【讨论】:

  • 这通常可以工作。但是,例如,当我输入 print(customdatedf.head(5)) 时,它会返回 Empty dataframe,而在 print(customdatedf.info()) 上,它会返回 Range index 0 entries0(the column name) 0 non-null datetime64[ns]
  • @Yoi123 之所以如此,是因为您的开始在您的结束之后。您从2019-07-06 开始并在2019-06-26 结束 - 也许可以恢复它:)
  • 是的,你是对的!我正忙着四处张望,没有注意到这一点……谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
相关资源
最近更新 更多