我有一个带有 DateTimeIndex 的 Pandas DataFrame: yyyy-mm-dd HH:MM:SS
A B C
2015-08-08 16:00:00 1 2 3
2015-08-08 16:00:08 4 5 6
...
我想提取特定时间范围内的行HH:MM:SS
。但是,此时间范围因每个日期而异yyyy-mm-dd
。
是否可以使用某种字典将日期映射到时间范围并相应地剪辑 DateTimeIndex?
您可以通过列表的 dict 过滤开始和结束时间,并使用list
过滤器DataFrames
的列表理解loc
。
最后concat
他们到一个:
print (df)
A B C
2015-08-08 16:00:00 1 2 3
2015-08-09 13:00:08 4 5 6
2015-08-09 13:00:10 4 5 7
d = {'2015-08-08':['16:00:00', '16:00:10'],'2015-08-09':['13:00:08', '13:00:20']}
df1 = pd.concat([df.loc[k + ' ' + v[0] : k + ' ' + v[1]] for k, v in d.items()])
print (df1)
A B C
2015-08-09 13:00:08 4 5 6
2015-08-09 13:00:10 4 5 7
2015-08-08 16:00:00 1 2 3
另一个解决方案boolean indexing
:
df1 = pd.concat([df[(df.index >= k + ' ' + v[0]) &
(df.index <= k + ' ' + v[1])] for k, v in d.items()])
print (df1)
A B C
2015-08-09 13:00:08 4 5 6
2015-08-09 13:00:10 4 5 7
2015-08-08 16:00:00 1 2 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句