gpt4 book ai didi

python - Pandas 如何按时间段过滤 DataFrame

转载 作者:行者123 更新时间:2023-11-28 20:34:11 30 4
gpt4 key购买 nike

我有一个包含下表的文件:

    Name        AvailableDate            totalRemaining
0 X3321 2018-03-14 13:00:00 200
1 X3321 2018-03-14 14:00:00 200
2 X3321 2018-03-14 15:00:00 200
3 X3321 2018-03-14 16:00:00 200
4 X3321 2018-03-14 17:00:00 193

我想返回一个包含特定时间期间所有记录的DataFrame,而不考虑实际的日期

我按照这里的例子:

filter pandas dataframe by time

但是当我执行以下命令时:

## setup
import pandas as pd
import numpy as np

### Step 2
### Check available slots
file2 = r'C:\Users\user\Desktop\Files\data.xlsx'

slots = pd.read_excel(file2,na_values='')

## filter the preferred ones
slots['nextAvailableDate'] = pd.to_datetime((slots['nextAvailableDate']))


slots['times'] = pd.to_datetime((slots['nextAvailableDate']))
slots = slots[slots['times'].between('21:00:00', '02:00:00')]

这将返回空 DataFrame 以及此解决方案:

slots = slots[slots['times'].dt.strftime('%H:%M:%S').between('21:00:00', '02:00:00')]

有没有一种方法可以在不单独为时间创建列的情况下正确地做到这一点?请问我该如何解决这个问题?

我的目标:

Name        AvailableDate            totalRemaining
0 X3321 2018-03-14 21:00:00 200
1 X3321 2018-03-14 22:00:00 200
2 X3321 2018-03-14 23:00:00 200
3 X3321 2018-03-14 00:00:00 200
4 X3321 2018-03-14 01:00:00 193

对于出现在数据集中的每一天。

最佳答案

我认为需要between_time使用由 set_index 创建的 Datetimeindex , 对于列添加 reset_indexreindex对于相同的列顺序:

print (slots)
Name AvailableDate totalRemaining
0 X3321 2018-03-14 21:00:00 200
1 X3321 2018-03-14 20:00:00 200
2 X3321 2018-03-14 22:00:00 200
3 X3321 2018-03-14 23:00:00 200
4 X3321 2018-03-14 00:00:00 200
5 X3321 2018-03-14 01:00:00 193
6 X3321 2018-03-14 13:00:00 200
7 X3321 2018-03-14 14:00:00 200
8 X3321 2018-03-14 15:00:00 200
9 X3321 2018-03-14 16:00:00 200
10 X3321 2018-03-14 17:00:00 193

slots['AvailableDate'] = pd.to_datetime(slots['AvailableDate'])

df = (slots.set_index('AvailableDate')
.between_time('21:00:00', '02:00:00')
.reset_index()
.reindex(columns=df.columns))
print (df)
AvailableDate Name totalRemaining
0 2018-03-14 21:00:00 X3321 200
1 2018-03-14 22:00:00 X3321 200
2 2018-03-14 23:00:00 X3321 200
3 2018-03-14 00:00:00 X3321 200
4 2018-03-14 01:00:00 X3321 193

关于python - Pandas 如何按时间段过滤 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49172824/

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