【问题标题】:Slicing by specific month按特定月份切片
【发布时间】:2016-05-14 03:11:00
【问题描述】:

我有一个以下格式的数据框。

              1            2           3           4  
Data                                                                            
2001-07-30      0.363354   27.428261   14.639130   6.763423         
...                  ...         ...         ...        ...           
2015-06-15      0.039085   28.562948   14.000722   8.605911         

我希望按月切片。因此,例如,我只想选择第 5 个月的数据并将其存储在一个新变量中。我找到了几个类似问题的答案。然而,这些并不能提供预期的结果。

该领域的问题和答案示例:

  1. Pandas DataFrame slicing by day/hour/minute
  2. python pandas dataframe slicing by date conditions
  3. pandas, python - how to select specific times in timeseries

我是使用 Python 和 Pandas 进行时间序列分析的新手,因此任何推动正确方向或阅读材料的人都将受到赞赏。

【问题讨论】:

  • IIUC 然后df.loc[df.index.month == 4] 应该可以工作,如果你在五月之后
  • 就这么简单。奇迹般有效!非常感谢。
  • 实际上月份索引是基于1,所以第5个月将是May而不是4
  • 如果我的回答解决了您的问题,那么请接受我的回答,这样问题就不会一直悬而未决,我的回答左上角会有一个空的勾号
  • 完成,等待官方回复。谢谢你的回答,帮了我很多忙。

标签: python-3.x datetime pandas slice


【解决方案1】:

datetimeindex 具有属性month 可以访问,您可以使用它来过滤df:

In [132]:
df = pd.DataFrame(index=pd.date_range(dt.datetime(2015,1,1), dt.datetime(2015,5,1)))
df.loc[df.index.month==2]

Out[132]:
Empty DataFrame
Columns: []
Index: [2015-02-01 00:00:00, 2015-02-02 00:00:00, 2015-02-03 00:00:00, 2015-02-04 00:00:00, 2015-02-05 00:00:00, 2015-02-06 00:00:00, 2015-02-07 00:00:00, 2015-02-08 00:00:00, 2015-02-09 00:00:00, 2015-02-10 00:00:00, 2015-02-11 00:00:00, 2015-02-12 00:00:00, 2015-02-13 00:00:00, 2015-02-14 00:00:00, 2015-02-15 00:00:00, 2015-02-16 00:00:00, 2015-02-17 00:00:00, 2015-02-18 00:00:00, 2015-02-19 00:00:00, 2015-02-20 00:00:00, 2015-02-21 00:00:00, 2015-02-22 00:00:00, 2015-02-23 00:00:00, 2015-02-24 00:00:00, 2015-02-25 00:00:00, 2015-02-26 00:00:00, 2015-02-27 00:00:00, 2015-02-28 00:00:00]

月份索引基于1,因此5 将是May

【讨论】:

    猜你喜欢
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多