当字典键指向数组时迭代字典键?

2024-05-16 12:06:07 发布

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

我制作了一个字典,每个键引用一个数组。我正试图对每个数组应用一个.loc命令,但我似乎不知道该怎么做。我想知道如何做到这一点:

#setup:
import pandas as pd
psd = pd.read_csv('psd.csv')
psd.head()

Out[43]: 
        id group   band       fp1  ...        fz        cz        pz        oz
0  3407906   Cu-  delta  0.291945  ...  0.230908  0.221589  0.247830  0.229259
1  3407906   Cu-  theta  0.022924  ...  0.026598  0.036143  0.029904  0.025336
2  3407906   Cu-  alpha  0.003124  ...  0.017416  0.015175  0.015207  0.028024
3  3407906   Cu-   beta  0.000573  ...  0.005325  0.006429  0.003628  0.003757
4  3407906   Cu-  gamma  0.000485  ...  0.002627  0.002037  0.000956  0.001303

gp = dict(tuple(psd.groupby('band')))
list(gp.keys())

Out[44]: ['alpha', 'beta', 'delta', 'gamma', 'theta']

for key in gp: 
    print(gp[key].head(1))

Out[45]:
        id group   band       fp1  ...        fz        cz        pz        oz
2  3407906   Cu-  alpha  0.003124  ...  0.017416  0.015175  0.015207  0.028024

[1 rows x 32 columns]
        id group  band       fp1  ...        fz        cz        pz        oz
3  3407906   Cu-  beta  0.000573  ...  0.005325  0.006429  0.003628  0.003757

[1 rows x 32 columns]
        id group   band       fp1  ...        fz        cz       pz        oz
0  3407906   Cu-  delta  0.291945  ...  0.230908  0.221589  0.24783  0.229259

[1 rows x 32 columns]
        id group   band       fp1  ...        fz        cz        pz        oz
4  3407906   Cu-  gamma  0.000485  ...  0.002627  0.002037  0.000956  0.001303

[1 rows x 32 columns]
        id group   band       fp1  ...        fz        cz        pz        oz
1  3407906   Cu-  theta  0.022924  ...  0.026598  0.036143  0.029904  0.025336

到目前为止还不错,但当我尝试以下方法时:

for key in gp:
    band = gp[key]
    x_band = band.loc[:,'fp1':'oz']

x_band.head()
Out[49]: 
         fp1        f3        f7  ...        cz        pz        oz
1   0.022924  0.019966  0.021740  ...  0.036143  0.029904  0.025336
6   0.028581  0.026947  0.025785  ...  0.028249  0.028188  0.025704
11  0.005078  0.001958  0.003227  ...  0.002071  0.002150  0.002991
16  0.014026  0.030532  0.018575  ...  0.036702  0.027133  0.020489
21  0.002640  0.001335  0.002605  ...  0.001256  0.001974  0.003032

您可以看到的结果仅适用于最后一个键/数组,而不是应用了band.loc命令的5个数组的字典。我可以/确实手动完成这项工作,结果得到了5个不同的阵列。但是有没有办法让它保持字典格式,这样我就不必从这一步开始做每件事5次了?很高兴澄清,对不起,这是一个奇怪的措辞


Tags: keyidbandgroupcz数组outrows