【问题标题】:Python pandas select rows by list of datesPython pandas 按日期列表选择行
【发布时间】:2017-03-14 18:46:37
【问题描述】:

如何按日期列表选择数据框的多行

dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))

In[1]: df

Out[1]: 
                   A         B         C         D
2013-01-01  0.084393 -2.460860 -0.118468  0.543618
2013-01-02 -0.024358 -1.012406 -0.222457  1.906462
2013-01-03 -0.305999 -0.858261  0.320587  0.302837
2013-01-04  0.527321  0.425767 -0.994142  0.556027
2013-01-05  0.411410 -1.810460 -1.172034 -1.142847
2013-01-06 -0.969854  0.469045 -0.042532  0.699582

myDates = ["2013-01-02", "2013-01-04", "2013-01-06"]

所以输出应该是

                   A         B         C         D
2013-01-02 -0.024358 -1.012406 -0.222457  1.906462
2013-01-04  0.527321  0.425767 -0.994142  0.556027
2013-01-06 -0.969854  0.469045 -0.042532  0.699582

【问题讨论】:

    标签: python pandas select time-series


    【解决方案1】:

    您可以使用index.isin() 方法为子集创建逻辑索引:

    df[df.index.isin(myDates)]
    

    【讨论】:

    • 谢谢。这太容易了。
    【解决方案2】:

    将您的条目转换为 DateTimeIndex:

    df.loc[pd.to_datetime(myDates)]
    
                       A         B         C         D
    2013-01-02 -0.047710 -1.827593 -0.944548 -0.149460
    2013-01-04  1.437924  0.126788  0.641870  0.198664
    2013-01-06  0.408820 -1.842112 -0.287346  0.071397
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2021-11-10
      • 2018-09-04
      相关资源
      最近更新 更多