在Datetime-indexed pandas dataframe中选择固定时间间隔的行

问题描述 投票:-1回答:2

我有一个由DateTime从小时“00:00:00”到小时“23:59:00”索引的pandas数据帧(以分钟为单位,不计算秒数)。

in: df.index
out: DatetimeIndex(['2018-10-08 00:00:00', '2018-10-08 00:00:00',
           '2018-10-08 00:00:00', '2018-10-08 00:00:00',
           '2018-10-08 00:00:00', '2018-10-08 00:00:00',
           '2018-10-08 00:00:00', '2018-10-08 00:00:00',
           '2018-10-08 00:00:00', '2018-10-08 00:00:00',
           ...
           '2018-10-08 23:59:00', '2018-10-08 23:59:00',
           '2018-10-08 23:59:00', '2018-10-08 23:59:00',
           '2018-10-08 23:59:00', '2018-10-08 23:59:00',
           '2018-10-08 05:16:00', '2018-10-08 07:08:00',
           '2018-10-08 13:58:00', '2018-10-08 09:30:00'],
          dtype='datetime64[ns]', name='DateTime', length=91846, freq=None)

现在我想从“00:00:00”开始选择特定的间隔,例如每1分钟或每1小时一次,并检索连续间隔的所有行。

我可以抓住整个时间间隔,比如第一个小时的时间间隔

df.between_time("01:00:00","00:00:00")

但我希望能够

(a)仅获得相隔特定间隔的所有时间(b)获得所有1小时的间隔,而不必手动询问它们24次。如何在between_time命令中增加DatetimeIndex?还有比这更好的方法吗?

python pandas loops variables
2个回答
0
投票

我会用屏蔽而不是制作新的数据帧来解决这个问题。例如,您可以添加列df['which_one']并为每个子集设置不同的数字。然后,您可以通过调用df[df['which_one']==x]来访问子集,其中x是您要选择的子集。您仍然可以通过这种方式访问​​数据来完成其他条件语句以及Pandas必须提供的所有其他条件语句。

附:还有其他方法可以访问可能更快的数据。我只是使用了我最舒服的另一种方式是df[df['which_one'].eq(x)]


0
投票

如果您对数据帧不熟,我建议您使用数据帧字典,例如:

import pandas as pd

dfdict={}

for i in range(0,10):
    dfdict[i]=pd.DataFrame()

print(dfdict)

你会看到他们确实是dfs

out[1]
{0: Empty DataFrame
Columns: []
Index: [], 1: Empty DataFrame
Columns: []
Index: [], 2: Empty DataFrame
Columns: []
Index: [], 3: Empty DataFrame
Columns: []
Index: [], 4: Empty DataFrame
Columns: []
Index: [], 5: Empty DataFrame
Columns: []
Index: [], 6: Empty DataFrame
Columns: []
Index: [], 7: Empty DataFrame
Columns: []
Index: [], 8: Empty DataFrame
Columns: []
Index: [], 9: Empty DataFrame
Columns: []
Index: []}

虽然正如其他人所说,可能有更实际的方法来解决您的问题(如果没有更具体的问题,很难说)

© www.soinside.com 2019 - 2024. All rights reserved.