如何建立大熊猫据帧与具有相同的名称/标识多列

问题描述 投票:1回答:1

是否有可能创建一个熊猫数据框(或类似的东西)与多维列(如果,即使是有道理的)?我所试图做的是以下几点:

a = rand(10,1)
b = rand(10,1)
c = rand(10,1)
z = rand(10,3)
X = hstack((a,b,c,z))
dfX = DataFrame(X, columns=['a','b','c','z'])

显然,上述方法无效,由于Z的尺寸。我有一个需要格式化为一个矩阵的X(或dfX.values)代码,但我希望能够通过dfX['a']代替X[:,0]与数据一起工作。前者只是读取更好。我所寻找的是什么,其产生dfX['z'].shape(10,3)

这甚至可能吗?有没有比大熊猫据帧更好的解决方案?

python pandas
1个回答
3
投票

如果我理解正确的 - 你是问多列:

In [116]: cols = pd.MultiIndex.from_tuples([('a',''),('b',''),('c',''),('z','1'),('z','2'),('z','3')])

In [117]: df = pd.DataFrame(X, columns=cols)

In [118]: df
Out[118]:
          a         b         c         z
                                        1         2         3
0  0.537156  0.660093  0.327486  0.669400  0.677605  0.174052
1  0.787965  0.983033  0.615065  0.720758  0.853734  0.724249
2  0.587206  0.841086  0.781004  0.676756  0.177496  0.845777
3  0.174780  0.620644  0.338403  0.336302  0.508739  0.210462
4  0.132288  0.765768  0.009254  0.155105  0.548964  0.618722
5  0.980484  0.844023  0.779290  0.462613  0.562098  0.571654
6  0.082263  0.511944  0.003198  0.359354  0.531740  0.870077
7  0.805626  0.745733  0.251047  0.737418  0.532125  0.208116
8  0.906066  0.827050  0.434911  0.869463  0.089989  0.074839
9  0.146566  0.960262  0.957117  0.269052  0.086013  0.558531

结果:

In [119]: df.loc[:, 'a']
Out[119]:
0    0.537156
1    0.787965
2    0.587206
3    0.174780
4    0.132288
5    0.980484
6    0.082263
7    0.805626
8    0.906066
9    0.146566
Name: a, dtype: float64

In [120]: df.loc[:, 'z']
Out[120]:
          1         2         3
0  0.669400  0.677605  0.174052
1  0.720758  0.853734  0.724249
2  0.676756  0.177496  0.845777
3  0.336302  0.508739  0.210462
4  0.155105  0.548964  0.618722
5  0.462613  0.562098  0.571654
6  0.359354  0.531740  0.870077
7  0.737418  0.532125  0.208116
8  0.869463  0.089989  0.074839
9  0.269052  0.086013  0.558531

In [121]: df.loc[:, ('z','2')]
Out[121]:
0    0.677605
1    0.853734
2    0.177496
3    0.508739
4    0.548964
5    0.562098
6    0.531740
7    0.532125
8    0.089989
9    0.086013
Name: (z, 2), dtype: float64
© www.soinside.com 2019 - 2024. All rights reserved.