我能够使用python datetime对象读取和切片pandas数据帧,但是我被迫只使用索引中的现有日期.例如,这有效:
>>> data
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 252 entries, 2010-12-31 00:00:00 to 2010-04-01 00:00:00
Data columns:
Adj Close 252 non-null values
dtypes: float64(1)
>>> st = datetime.datetime(2010, 12, 31, 0, 0)
>>> en = datetime.datetime(2010, 12, 28, 0, 0)
>>> data[st:en]
Adj Close
Date
2010-12-31 593.97
2010-12-30 598.86
2010-12-29 601.00
2010-12-28 598.92
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用DF中不存在的开始日期或结束日期,我会得到python KeyError.
我的问题:如何查询数据框对象的日期范围; 即使DataFrame中不存在开始日期和结束日期.大熊猫是否允许基于范围的切片?
我正在使用pandas版本0.10.1
我现在工作了很长一段时间使用python和pandas来分析一组每小时数据并发现它非常好(来自Matlab.)
现在我有点卡住了.我创造了我的DataFrame喜欢:
SamplingRateMinutes=60
index = DateRange(initialTime,finalTime, offset=datetools.Minute(SamplingRateMinutes))
ts=DataFrame(data, index=index)
Run Code Online (Sandbox Code Playgroud)
我现在要做的是选择10到13和20-23小时的所有日期的数据,以便使用这些数据进行进一步的计算.到目前为止,我使用了切片数据
selectedData=ts[begin:end]
Run Code Online (Sandbox Code Playgroud)
我肯定会得到某种脏循环来选择所需的数据.但必须有一种更优雅的方式来指出我想要的东西.我确信这是一个常见的问题,伪代码的解决方案看起来应该是这样的:
myIndex=ts.index[10<=ts.index.hour<=13 or 20<=ts.index.hour<=23]
selectedData=ts[myIndex]
Run Code Online (Sandbox Code Playgroud)
提到我是一名工程师而且没有程序员:) ...
我有一个带有日期时间索引的pandas Dataframe,如'YYYY-MM-DD HH:MM:SS'.
Index Parameter
2007-05-02 14:14:08 134.8
2007-05-02 14:14:32 134.8
2007-05-02 14:14:41 134.8
2007-05-02 14:14:53 134.8
2007-05-02 14:15:01 134.8
2007-05-02 14:15:09 134.8
......
2007-05-30 23:08:02 105.9
2007-05-30 23:18:02 105.9
2007-05-30 23:28:02 105.9
2007-05-30 23:38:03 105.8
Run Code Online (Sandbox Code Playgroud)
可以按年df['2007']或按月分割数据帧df['2007-05']吗?
但是,当我试图在白天切片DataFrame时df['2007-05-02'],我得到了错误:
KeyError: < Timestamp: 2007-02-05 00:00:00.
Run Code Online (Sandbox Code Playgroud)
我使用pandas版本8.0.1.是否可以以比年或月更小的频率切片DataFrame?例如,按天或小时?