对于所有行和列,访问和存储Pandas属性是如何分布在与Numpy矩阵相同的多个列上的?

2024-09-29 23:27:01 发布

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

我现在和熊猫一起工作,我发现了一个数据集。这个数据集有多个属性,每个属性的值分布在12列中。例如,我将如何访问和存储色度峰度作为一个浮点的2d Numpy矩阵,即矩阵的每一行都有12列的12个值的向量?你知道吗

附件是我要处理的属性的前几行

Dataset 编辑:数据集的第一个属性行作为文本

feature chroma_cens chroma_cens chroma_cens chroma_cens chroma_cens chroma_cens chroma_cens chroma_cens chroma_cens chroma_cens chroma_cens chroma_cens
statistics  kurtosis    kurtosis    kurtosis    kurtosis    kurtosis    kurtosis    kurtosis    kurtosis    kurtosis    kurtosis    kurtosis    kurtosis
number  1   2   3   4   5   6   7   8   9   10  11  12
track_id                                                
2   7.1806526184    5.2303090096    0.2493208051    1.3476201296    1.4824777842    0.5313712359    1.4815930128    2.691454649 0.8668681979    1.3412306309    1.3477915525    1.2376583815

Tags: 数据文本numpy编辑附件属性矩阵向量
1条回答
网友
1楼 · 发布于 2024-09-29 23:27:01

我想你可以用元组来选择:

#sample data with 6 columns for each pair a, b
np.random.seed(125)
N = 10
a = ['chroma_cens']
b = ['kurtosis', 'skewness']
c = range(1, 7) 

mux = pd.MultiIndex.from_product([a,b,c])
df = pd.DataFrame(np.random.rand(N, 12), columns=mux)

print (df)

  chroma_cens                                                              \
     kurtosis                                                    skewness   
            1         2         3         4         5         6         1   
0    0.506726  0.057531  0.627580  0.132553  0.131085  0.788544  0.506686   
1    0.891442  0.086312  0.847512  0.529616  0.550261  0.848461  0.158998   
2    0.481331  0.382784  0.874249  0.363505  0.384864  0.035155  0.634643   
3    0.623105  0.999237  0.567151  0.487938  0.104856  0.525416  0.284066   
4    0.488099  0.167418  0.277106  0.097982  0.930415  0.486878  0.720688   
5    0.981763  0.285865  0.979590  0.924292  0.631067  0.119238  0.855842   
6    0.346577  0.329280  0.606794  0.825932  0.273021  0.503340  0.828568   
7    0.635208  0.283928  0.821345  0.874243  0.454211  0.622611  0.267682   
8    0.844209  0.662073  0.590640  0.612480  0.258679  0.413567  0.797383   
9    0.352072  0.801542  0.862749  0.000285  0.793939  0.297286  0.441013   



          2         3         4         5         6  
0  0.412826  0.578009  0.488174  0.335964  0.140816  
1  0.297996  0.817808  0.977898  0.933133  0.310414  
2  0.009076  0.197091  0.880822  0.002330  0.109501  
3  0.658453  0.989523  0.644251  0.303101  0.141395  
4  0.192273  0.210032  0.244598  0.175200  0.367130  
5  0.782623  0.815908  0.575624  0.037598  0.532883  
6  0.429792  0.491665  0.752531  0.780970  0.524148  
7  0.726456  0.379144  0.345580  0.694614  0.585782  
8  0.431819  0.034473  0.581294  0.282111  0.856725  
9  0.294635  0.841181  0.804839  0.311352  0.171094 

tup = ('chroma_cens', 'kurtosis', 2)

print (df[tup])
0    0.057531
1    0.086312
2    0.382784
3    0.999237
4    0.167418
5    0.285865
6    0.329280
7    0.283928
8    0.662073
9    0.801542
Name: (chroma_cens, kurtosis, 2), dtype: float64

如果要选择多列,请使用^{}

idx = pd.IndexSlice
print (df.loc[:, idx['chroma_cens', 'kurtosis', :]])
  chroma_cens                                                  
     kurtosis                                                  
            1         2         3         4         5         6
0    0.506726  0.057531  0.627580  0.132553  0.131085  0.788544
1    0.891442  0.086312  0.847512  0.529616  0.550261  0.848461
2    0.481331  0.382784  0.874249  0.363505  0.384864  0.035155
3    0.623105  0.999237  0.567151  0.487938  0.104856  0.525416
4    0.488099  0.167418  0.277106  0.097982  0.930415  0.486878
5    0.981763  0.285865  0.979590  0.924292  0.631067  0.119238
6    0.346577  0.329280  0.606794  0.825932  0.273021  0.503340
7    0.635208  0.283928  0.821345  0.874243  0.454211  0.622611
8    0.844209  0.662073  0.590640  0.612480  0.258679  0.413567
9    0.352072  0.801542  0.862749  0.000285  0.793939  0.297286

^{}

print (df.xs(('chroma_cens', 'kurtosis'), axis=1))
          1         2         3         4         5         6
0  0.506726  0.057531  0.627580  0.132553  0.131085  0.788544
1  0.891442  0.086312  0.847512  0.529616  0.550261  0.848461
2  0.481331  0.382784  0.874249  0.363505  0.384864  0.035155
3  0.623105  0.999237  0.567151  0.487938  0.104856  0.525416
4  0.488099  0.167418  0.277106  0.097982  0.930415  0.486878
5  0.981763  0.285865  0.979590  0.924292  0.631067  0.119238
6  0.346577  0.329280  0.606794  0.825932  0.273021  0.503340
7  0.635208  0.283928  0.821345  0.874243  0.454211  0.622611
8  0.844209  0.662073  0.590640  0.612480  0.258679  0.413567
9  0.352072  0.801542  0.862749  0.000285  0.793939  0.297286

相关问题 更多 >

    热门问题