按时间索引筛选 Pandas DataFrame

63

我有一个从早上6:36到下午5:31的熊猫数据框。我想删除所有时间早于上午8:00:00的观测值。以下是我的尝试:

df = df[df.index < '2013-10-16 08:00:00']

这并没有起到任何作用,请帮忙。


可能重复:https://dev59.com/bHHYa4cB1Zd3GeqPN6n9 - Ryan Saxe
谢谢提供链接。该过滤器是按列值进行筛选,而不是按时间索引进行筛选。 - user2113095
1
这不是重复的,另一篇帖子没有按datetimeindex过滤。 - user2113095
这里有一个更加通用的解决方案:[https://dev59.com/jmIk5IYBdhLWcg3wiuqk]。 - feetwet
2个回答

90
你想要选择标签(索引)而不是值,因此需要使用df.loc[df.index < '2013-10-16 08:00:00']。更多信息请参考按标签选择

1
哦,我不知道你可以在索引上使用布尔测试来使用.loc!太好了。 - fantabolous
9
如果它有多级索引,该怎么办? - qed
2
我没有现成的用例,但我猜测它应该是这样的:df.loc[(df.index['a'] < something & df.index['b'] < another_thing)] - Kevin Stone

1
你可以使用query来获得更简洁的选项:
df.query("index < '2013-10-16 08:00:00'")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接