首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于所有行和列,如何访问和存储Pandas属性与Numpy矩阵相同命名的多列?

对于所有行和列,如何访问和存储Pandas属性与Numpy矩阵相同命名的多列?
EN

Stack Overflow用户
提问于 2018-01-10 12:41:26
回答 1查看 88关注 0票数 0

我现在和Pandas一起工作,我发现了一个数据集。此数据集具有多个属性,每个属性值分布在12列中。例如,我如何访问和存储chroma_cens峰度作为浮点数的2d Numpy矩阵,即矩阵的每一行都有12列的12个值的向量?

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

编辑:Dataset的第一个属性行为文本

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 13:00:20

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

代码语言:javascript
复制
#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)
代码语言:javascript
复制
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 
代码语言:javascript
复制
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

如果要选择多列,请使用slicers

代码语言:javascript
复制
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

DataFrame.xs

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48187724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档