【问题标题】:Indexing and slicing dataframe by date and time in python在python中按日期和时间索引和切片数据帧
【发布时间】:2016-10-18 20:26:45
【问题描述】:

我有时间系列数据集。我可以通过以下代码选择从 3 月到 5 月的数据:

df[(df.index.month >=3) & (df.index.month<=5)]

但是问题是如何选择march-15may-15的数据呢? 任何帮助将不胜感激。

我的数据框看起来像:

2000-02-25   0.01
2000-02-26   0.03
2000-02-27   1.0
2000-02-28   1.52
2000-02-29   0.23
2000-03-01   0.45
2000-03-05   2.15
2000-03-06   1.75
.................
.................

【问题讨论】:

  • 15 代表日还是年?
  • 15 是日而不是年
  • 所以您想要所有年份的 3 月 15 日到 5 月 15 日的数据,而不是一年?
  • 完全正确。我正在查找所有年份从 3 月 15 日到 5 月 15 日的数据

标签: python pandas numpy dataframe


【解决方案1】:

您可以使用助手 Series s 将所有年份替换为相同 - 例如2000:

print (df)
               A
2001-02-25  0.01
2002-02-26  0.03
2003-02-27  1.00
2004-02-28  1.52
2005-03-29  0.23
2006-03-01  0.45
2007-03-05  2.15
2008-03-06  1.75

s = pd.Series(df.index.map(lambda x: pd.datetime(2000, x.month, x.day)))

mask = (s.dt.date > pd.datetime(2000,3,15).date()) & 
       (s.dt.date < pd.datetime(2000,5,15).date())
mask.index = df.index
print (mask)
2001-02-25    False
2002-02-26    False
2003-02-27    False
2004-02-28    False
2005-03-29     True
2006-03-01    False
2007-03-05    False
2008-03-06    False
dtype: bool

df = df[mask]
print (df)
               A
2005-03-29  0.23

【讨论】:

    猜你喜欢
    • 2020-08-30
    • 2012-12-04
    • 2019-07-22
    • 2015-04-10
    • 2015-01-27
    • 1970-01-01
    • 2017-01-16
    • 2021-03-27
    • 2018-01-24
    相关资源
    最近更新 更多