gpt4 book ai didi

python - Pandas 删除超出时间范围的行

转载 作者:太空狗 更新时间:2023-10-29 16:54:50 26 4
gpt4 key购买 nike

我正在尝试遍历 DataFrame 索引中的每一行并删除不在特定时间之间的所有行。

我一直在寻找解决方案,但没有一个将日期与时间分开,我只想删除时间范围之外的行。

最佳答案

您可以使用 between_time直接函数:

ts.between_time(datetime.time(18), datetime.time(9), include_start=False, include_end=False)

原始答案:

您可以使用indexer_between_time Index 方法。

例如,要包括上午 9 点到下午 6 点之间的时间(包括):

ts.ix[ts.index.indexer_between_time(datetime.time(9), datetime.time(18))]

做相反的事情,排除下午 6 点到早上 9 点之间的时间(不包括):

ts.ix[ts.index.indexer_between_time(datetime.time(18), datetime.time(9),
include_start=False, include_end=False)]

注意:indexer_between_time 的参数 include_startinclude_end 默认为 True,设置 include_startFalse 表示时间部分恰好为 start_time(第一个参数)的日期时间,在本例中为下午 6 点,将不包括在内。

例子:

In [1]: rng = pd.date_range('1/1/2000', periods=24, freq='H')

In [2]: ts = pd.Series(pd.np.random.randn(len(rng)), index=rng)

In [3]: ts.ix[ts.index.indexer_between_time(datetime.time(10), datetime.time(14))]
Out[3]:
2000-01-01 10:00:00 1.312561
2000-01-01 11:00:00 -1.308502
2000-01-01 12:00:00 -0.515339
2000-01-01 13:00:00 1.536540
2000-01-01 14:00:00 0.108617

注意:相同的语法(使用 ix )适用于 DataFrame:

In [4]: df = pd.DataFrame(ts)

In [5]: df.ix[df.index.indexer_between_time(datetime.time(10), datetime.time(14))]
Out[5]:
0
2000-01-03 10:00:00 1.312561
2000-01-03 11:00:00 -1.308502
2000-01-03 12:00:00 -0.515339
2000-01-03 13:00:00 1.536540
2000-01-03 14:00:00 0.108617

关于python - Pandas 删除超出时间范围的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14539992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com