【发布时间】:2014-10-03 17:42:50
【问题描述】:
我正在将我的数据文件夹组织成多索引数据帧,其结构类似于:
In: df
Out:
Sweep Time Primary Secondary 720nm 473nm PMTShutter
Sweep1 0.00000 -87.429810 -4.882812 0.000610 0.000305 0.000000
0.00005 -87.445068 -4.882812 0.000610 0.001221 0.000000
0.00010 -87.451172 -4.272460 0.000000 0.000916 0.000000
... ... ... ... ...
Sweep5 0.68655 -87.261963 -4.272461 0.000305 0.000916 0.000305
0.68660 -87.258911 -4.272461 0.000305 0.000916 0.000305
0.68665 -87.252808 -5.493164 0.000000 0.000916 0.000305
0.68670 -87.261963 -4.272461 0.000305 0.000916 0.000305
不过,我无法通过阅读 Pandas 的文档来尝试找出如何根据两个索引对其进行切片。
例如,我认为 df['Sweep1'] 会返回 Sweep1 的所有内容。但是,事实并非如此。但是, df.loc['Sweep1'] 按我的预期工作。为什么会这样?
我似乎完全无法按时间索引进行索引。例如,我们分析的一个非常典型的部分是对特定时间范围内的数据点进行平均,或者找到特定时间段内的最大值或最小值。那么,如何根据时间索引的特定时间段(例如时间 0.0 秒到 0.5 秒)切出数据区域。
如果我知道该范围内的数据点的确切数量(即范围 * 采样频率),我可以实现这一点,但是将时间设置为其中一个索引的目的是为了避免这样做。
同样,如果我想绘图,假设 Sweep1 Primary by Time - 我似乎无法弄清楚如何使用时间索引作为我的 x 轴。
所以,我想我的主要问题是:如何根据扫描数和时间的某个子区域从不同列中切出数据点。这至少会为我指明正确的方向。
谢谢
【问题讨论】:
-
我对正在使用的数据、应用程序或库知之甚少;对我来说,这听起来像是 sqlite3 这样的数据库引擎可能适合的东西;您可以在其中使用查询语言语法来获取所需的数据点,而不是使用可能不适合您的数据查找需求或应用程序固有的 Python 数据类型原语。
标签: python pandas slice multi-index