python - 如何仅对 DatetimeIndex 进行排序?
问题描述
我有一个像这样的 DatetimeIndex 。
DatetimeIndex(['2015-04-29 00:00:00', '2016-02-22 16:00:00',
'2016-02-12 04:00:00', '2016-02-16 04:00:00',
'2016-02-09 12:00:00', '2016-02-11 07:00:00',
'2015-08-06 00:00:00', '2014-10-31 00:00:00',
'2014-11-14 00:00:00', '2015-09-24 00:00:00',
...
'2015-12-30 00:00:00', '2015-11-30 00:00:00',
'2016-02-19 20:00:00', '2014-11-13 00:00:00',
'2014-12-15 00:00:00', '2015-06-16 00:00:00',
'2015-12-31 00:00:00', '2015-01-09 00:00:00',
'2015-11-25 00:00:00', '2015-03-12 00:00:00'],
dtype='datetime64[ns]', length=604, freq=None)
和这样的(更长的)数据框:
Df:
Val
Time
2014-10-10 00:00:00 ...
2014-10-13 00:00:00 ...
2014-10-14 00:00:00 ...
2014-10-15 00:00:00 ...
2014-10-16 00:00:00 ...
... ... ... ... ...
2016-02-23 16:00:00 ...
2016-02-23 17:00:00 ...
2016-02-23 18:00:00 ...
2016-02-23 19:00:00 ...
2016-02-23 20:00:00 ...
如何仅获取位于这些索引上的行的数据框?
解决方案
如果可能,某些值不匹配,请Index.isin
用于boolean indexing
:
df1 = df[df.index.isin(idx)]
或Index.intersection
通过选择DataFrame.loc
:
df1 = df.loc[df.index.intersection(idx)]
如果所有匹配的值都可能通过仅选择简化答案 by loc
,但如果至少一个值不匹配,则在新版本的 pandas 中失败:
df2 = df.loc[idx]
推荐阅读
- spring-batch - 春季批处理:MultiResourceItemReader 结果管理
- arm - ARM (v7) 未对齐访问处理和设备/强序内存
- html - 在 rmarkdown 中使用选项卡时防止 TOC 折叠(返回顶部)
- gradle - CommandInvokationFailure:Gradle 构建失败。(还没有解决方案)
- kubernetes - Kubernetes 入口将 http 重定向到 https
- java - 仅当数组包含等于另一个嵌入字段的值时才使用 java 驱动程序进行匹配
- java - 音频流 - 捕获和读取麦克风数据
- bash - sed 模式的命令输出
- angular - Angular 9 显示来自嵌套 json 的数据,从 rest api 获取
- c# - 将 GraphQL.Net 与 c# 一起使用时,如何访问 GraphQL 字段中的参数值?