我有一个由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?还有比这更好的方法吗?
我会用屏蔽而不是制作新的数据帧来解决这个问题。例如,您可以添加列df['which_one']
并为每个子集设置不同的数字。然后,您可以通过调用df[df['which_one']==x]
来访问子集,其中x
是您要选择的子集。您仍然可以通过这种方式访问数据来完成其他条件语句以及Pandas必须提供的所有其他条件语句。
附:还有其他方法可以访问可能更快的数据。我只是使用了我最舒服的另一种方式是df[df['which_one'].eq(x)]
。
如果您对数据帧不熟,我建议您使用数据帧字典,例如:
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: []}
虽然正如其他人所说,可能有更实际的方法来解决您的问题(如果没有更具体的问题,很难说)