如何使用另一个日期时间索引获取具有日期时间索引的 Pandas 数据框中的行?

Posted

技术标签:

【中文标题】如何使用另一个日期时间索引获取具有日期时间索引的 Pandas 数据框中的行?【英文标题】:How to get the rows in Pandas dataframe with datetime index using another datetime index? 【发布时间】:2020-06-04 17:56:03 【问题描述】:

我有一个带有以下日期时间索引的 Pandas 数据框:

DatetimeIndex(['2020-01-02', '2020-01-03', '2020-01-06', '2020-01-07',
               '2020-01-08', '2020-01-09', '2020-01-10', '2020-01-13',
               '2020-01-14', '2020-01-15',
               ...
               '2020-01-17', '2020-01-21', '2020-01-22', '2020-01-23',
               '2020-01-24', '2020-01-27', '2020-01-28', '2020-01-29',
               '2020-01-30', '2020-01-31'],
              dtype='datetime64[ns]', name='Date', length=49098, freq=None)

我想获取与以下日期时间索引相交的行:

DatetimeIndex(['2020-01-02', '2020-01-03', '2020-01-06', '2020-01-07',
               '2020-01-08', '2020-01-09', '2020-01-10'],
              dtype='datetime64[ns]', name='Date', freq=None)

最自然(又名“Pythonic”)的方法是什么?

【问题讨论】:

【参考方案1】:

使用Index.intersection:

idx = idx1.intersection(idx2)

或者,如果之前没有定义索引:

idx = df1.index.intersection(df2.index)

【讨论】:

为您服务。 这是将两个 DateTimeIndex 的交集作为 DateTimeIndex 的方法。但是您如何从原始数据框中获取行(这是原始问题)? df.loc[idx] 给了我一个比原来的 df 有更多行的数据框。我原来的df 有多次出现相同的日期。 @jezrael 我知道你很快,但我不知道你这么快!是的,它有效。 感谢@jezrael!我正在搜索将近一个小时以寻找干净的答案

以上是关于如何使用另一个日期时间索引获取具有日期时间索引的 Pandas 数据框中的行?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取特定行号的日期时间索引值

如何按月份和年份输入过滤具有日期时间索引的数据框?熊猫

如何获取单个表格行日期索引属性索引,以便我可以提取其单元格的值?

将具有日期时间索引的行插入数据框

熊猫以时间为索引获取特定日期的行数

将 DateTime 索引值转换为索引号