【问题标题】:How to fix what dates your dataframe includes如何修复您的数据框包含的日期
【发布时间】:2020-09-30 06:45:15
【问题描述】:

我有一个数据框,我试图从今天 (-5) 天到下个月底获取数据。

在今天的情况下是这样的;

ix = pd.DatetimeIndex(start=datetime(2020, 6, 05), end=datetime(2020, 7, 31), freq='D')
df.reindex(ix)

如果我想自动化,有什么可以利用的功能吗?

我试过了

startdate = pd.to_datetime('today') - pd.DateOffset(days=5)
enddate = pd.to_datetime('today', format) + MonthEnd(2)

ix = pd.DatetimeIndex(start=startdate, end=enddate, freq='D')
df.reindex(ix)

..但现在似乎正在工作。 任何帮助表示赞赏!

【问题讨论】:

  • 现在你的意思是不是?错误是什么?你的意思是ix = pd.date_range(start=startdate, end=enddate, freq='D')?顺便说一句。我认为您不需要提供带有“今天”的格式。

标签: python pandas datetime indexing reindex


【解决方案1】:

您的代码很接近,我认为主要问题是您错误地构造了DatetimeIndex:它不需要startend 参数(请参阅docs)。也同意@MrFuppes 关于format 是不必要的。

我想你想要pandas.date_range,它仍然返回DatetimeIndex

startdate = pd.to_datetime('today') - pd.DateOffset(days=5)
enddate = pd.to_datetime('today') + pd.tseries.offsets.MonthEnd(2)

ix = pd.date_range(startdate,enddate,freq='D')

这似乎对我有用,可用于重新索引。如果您只想获取日期而不需要运行代码的具体时间,也可以在开始和结束日期调用 floor 方法:

ix = pd.date_range(startdate.floor('d'),enddate.floor('d'),freq='D')

【讨论】:

  • 啊,太近了!这是完美的,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多