基于非连续列表索引选择的多索引DF索引

2024-09-25 18:12:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我将数据组织成一个多索引df,如下所示:

In [8]: data
Out[8]:
                    Time     Primary  Secondary    BL LED
Sweep
Sweep0001 0      0.00000  -70.434570 -41.656494 -0.000305
          1      0.00005  -67.626953 -41.625977  0.000305
          2      0.00010  -68.725586 -41.595459 -0.002441
          3      0.00015  -70.556641 -41.625977  0.000305
          4      0.00020  -71.899414 -41.442871 -0.002136
...                  ...         ...        ...       ...
Sweep0010 79970  3.99850 -105.102539 -41.351318 -0.001221
          79971  3.99855  -96.801758 -41.534424  0.000000
          79972  3.99860 -105.712891 -41.687012  0.000305
          79973  3.99865 -109.741211 -41.473389 -0.001221
          79974  3.99870 -106.567383 -41.503906 -0.000610

[800000 rows x 4 columns]

我需要能够选择任意扫描组合(例如,Sweep0002、Sweep0005、Sweep0007)。理想情况下,我可以传递一个我想要选择的扫描列表。你知道吗

我可以使用.ix选择一系列扫描,只要它们是连续的。e、 g.:

In [9]: data.ix['Sweep0001':'Sweep0003']
Out[9]:
                    Time    Primary  Secondary    BL LED
Sweep
Sweep0001 0      0.00000 -70.434570 -41.656494 -0.000305
          1      0.00005 -67.626953 -41.625977  0.000305
          2      0.00010 -68.725586 -41.595459 -0.002441
          3      0.00015 -70.556641 -41.625977  0.000305
          4      0.00020 -71.899414 -41.442871 -0.002136
...                  ...        ...        ...       ...
Sweep0003 79970  3.99850 -93.139648 -41.595459 -0.000610
          79971  3.99855 -88.378906 -41.381836 -0.002747
          79972  3.99860 -93.750000 -41.534424  0.000610
          79973  3.99865 -93.261719 -41.381836  0.000000
          79974  3.99870 -93.139648 -41.473389  0.000610

[240000 rows x 4 columns]

但是,我无法找到一种方法来选择非连续的扫描范围/扫描列表。你知道吗

我已经求助于循环遍历一个扫描列表,并为选定的扫描构建一个新的df,这显然不是一个理想的解决方案。i、 电子邮件:

sweep_list = ['Sweep0001', 'Sweep0003', 'Sweep0009']
df_list = [data.ix[sweep] for sweep in sweep_list]

sub_df = pd.concat(df_list, keys=sweep_list)
sub_df.index.levels[0].name = "Sweep"

一定有更好的方法来做这件事,但我似乎不知道那是什么。你知道吗

谢谢


Tags: indf列表datatimeoutlistix