我将数据组织成一个多索引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"
一定有更好的方法来做这件事,但我似乎不知道那是什么。你知道吗
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐