【问题标题】:Pandas: extracting multiple rows from DataFrame with list of DatetimeIndicesPandas:使用 DatetimeIndices 列表从 DataFrame 中提取多行
【发布时间】:2017-07-20 11:48:20
【问题描述】:

我有一个熊猫数据框,其索引具有秒频:

DatetimeIndex(['2015-12-28 05:20:05', '2015-12-28 05:20:06',
               '2015-12-28 05:20:07', '2015-12-28 05:20:08',
               ...
               '2015-12-28 21:19:55', '2015-12-28 21:19:56',
               '2015-12-28 21:19:57', '2015-12-28 21:19:58']

给定日期时间字符串列表,我想一次提取多行。我试过了:

df.loc[['2015-12-28 08:32:39', '2015-12-28 08:32:48']]

但我收到以下错误:

KeyError: "None of [['2015-12-28 08:32:39', '2015-12-28 08:32:48']] are in the [index]"

【问题讨论】:

    标签: python pandas dataframe indexing


    【解决方案1】:

    您可以通过DatetimeIndexto_datetimelist 转换为datetime

    d = ['2015-12-28 05:20:05', '2015-12-28 21:19:58']
    print (df.loc[pd.DatetimeIndex(d)])
    

    或者:

    print (df.loc[pd.to_datetime(d)])
    

    示例:

    idx = pd.DatetimeIndex(['2015-12-28 05:20:05', '2015-12-28 05:20:06',
                   '2015-12-28 05:20:07', '2015-12-28 05:20:08',
                   '2015-12-28 21:19:55', '2015-12-28 21:19:56',
                   '2015-12-28 21:19:57', '2015-12-28 21:19:58'])
    df = pd.DataFrame({'s': range(8)}, index=idx)  
    print (df)
                         s
    2015-12-28 05:20:05  0
    2015-12-28 05:20:06  1
    2015-12-28 05:20:07  2
    2015-12-28 05:20:08  3
    2015-12-28 21:19:55  4
    2015-12-28 21:19:56  5
    2015-12-28 21:19:57  6
    2015-12-28 21:19:58  7
    
    d = ['2015-12-28 05:20:05', '2015-12-28 21:19:58']
    print (df.loc[pd.to_datetime(d)])
                         s
    2015-12-28 05:20:05  0
    2015-12-28 21:19:58  7
    
    print (df.loc[pd.to_datetime(d)])
                         s
    2015-12-28 05:20:05  0
    2015-12-28 21:19:58  7
    

    【讨论】:

      猜你喜欢
      • 2020-01-28
      • 2018-01-22
      • 1970-01-01
      • 2013-10-29
      • 2019-02-03
      • 1970-01-01
      相关资源
      最近更新 更多