我可以从pandas文档中看到你可以去:
df.loc[['a','b','c'],:]
对于时间序列,为什么你不去:
x = df.loc[['2005-10-27 14:30':'2005-10-27 15:15', '2006-04-14 14:40':'2006-04-14 15:20', '2008-01-25 14:30':'2008-01-25 15:30'],:]
我收到语法错误.你能否在时间序列上做多个切片范围?有解决方法吗?
解决方法:
虽然DataFrame索引将接受列索引列表,但它不接受行切片对象列表.
这应该做你想要的,它循环你所需的范围编译一个新的DataFrame.
import numpy as np
import pandas as pd
# let's create some fake data
date_range = pd.date_range('2005-01-01', '2008-12-31', freq='9min')
l = len(date_range)
df = pd.DataFrame({'normal': np.random.randn(l), 'uniform':np.random.rand(l),
'datetime':date_range, 'integer':range(l)}, index=date_range)
# let's identify the periods we want
desired = [('2005-10-27 14:30','2005-10-27 15:15'),
('2006-04-14 14:40','2006-04-14 15:20'),
('2008-01-25 14:30','2008-01-25 15:30')]
# let's loop through the desired ranges and compile our selection
x = pd.DataFrame()
for (start, stop) in desired:
selection = df[(df.index >= pd.Timestamp(start)) &
(df.index <= pd.Timestamp(stop))]
x = x.append(selection)
# and let's have a look at what we found ...
print(x)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。