我设法使用以下代码在索引号(在本例中为+/- 2)附近提取数据:
a = stim_onset[1:]
ss = [(num+1) for num,i in enumerate(zip(stim_onset,a)) if i == (False, True)]
fin = [i for x in ss for i in range(x-2, x+3 ) if i in range(len(stim_onset))]
df = data[1:].loc[np.unique(fin)]
print(df)
其中stim_onset是布尔False-True的列表
df看起来像这样:
0 1 2 3
176 False 8333.912069 28698.791668 4.170312e+07
177 False 8331.456998 28695.334820 4.170315e+07
178 True 8326.858504 28695.763083 4.170319e+07
179 True 8326.862988 28704.501836 4.170322e+07
180 True 8326.804694 28700.394908 4.170325e+07
897 False 8280.768191 28618.765863 4.172740e+07
898 False 8279.306358 28621.403521 4.172744e+07
899 True 8283.315187 28619.622388 4.172747e+07
900 True 8278.514906 28631.908033 4.172750e+07
901 True 8276.656227 28619.356645 4.172754e+07
1595 False 8243.285199 28565.812841 4.175091e+07
1596 False 8244.868103 28570.760921 4.175095e+07
1597 True 8241.247154 28564.194228 4.175098e+07
1598 True 8241.372710 28578.414742 4.175101e+07
1599 True 8242.744859 28570.804845 4.175105e+07
2351 False 8218.234507 28519.885522 4.177637e+07
2352 False 8214.667367 28514.546515 4.177641e+07
2353 True 8219.288282 28523.390687 4.177644e+07
2354 True 8222.958557 28531.947153 4.177647e+07
2355 True 8221.680575 28531.938369 4.177651e+07
2906 False 8214.355719 28495.327408 4.179507e+07
2907 False 8216.021580 28500.741086 4.179510e+07
2908 True 8219.893642 28506.712604 4.179513e+07
2909 True 8220.779261 28510.848083 4.179517e+07
2910 True 8219.299492 28507.771181 4.179520e+07
3408 False 8201.423437 28479.235716 4.181197e+07
3409 False 8203.149834 28470.999897 4.181201e+07
3410 True 8201.952566 28475.888679 4.181204e+07
3411 True 8200.217201 28481.596651 4.181209e+07
3412 True 8201.037800 28475.354998 4.181211e+07
这只是一个大型数据集的一小部分,我想对索引号为176-897-1595-2351-2906-3408的df第3列以及提取的块中的以下数字进行平均并计算标准误。 谢谢!
答案 0 :(得分:1)
df.iloc[np.r_[176:898, 1595:2352, 2906:3409]][3].agg(['mean','std'])
将为您提供这些索引的第3列中所有值的均值和标准差。