将 numpy 数组复制到 Panda 多索引中(大小相同)

Posted

技术标签:

【中文标题】将 numpy 数组复制到 Panda 多索引中(大小相同)【英文标题】:Copy numpy array into Panda multiindex (same size) 【发布时间】:2017-09-22 04:35:36 【问题描述】:

我有两个矩阵:numpy 方阵和 panda 多索引方阵。它们的大小相同。这个想法是从 numpy 获取值到多索引熊猫矩阵中,以便更轻松地导航到数据中。

我的矩阵大约是 100 000 x 100 000。 而且我的熊猫矩阵有三级索引。

tuples = [('1','A','a'), ('1','A','b'), ('1','A','c'), ('1','B','a'), ('1','B','b'), ('1','B','c'), ('2','A','a'), ('2','A','b'), ('2','B','a')]
index = pd.MultiIndex.from_tuples(tuples, names=['geography', 'product','activity'])
df = pd.DataFrame(index=index, columns=index)

geography                   1                 2      
product                     A        B        A     B
activity                    a  b  c  a  b  c  a  b  a
geography product activity                           
1         A       a         0  0  0  0  0  0  0  0  0
                  b         0  0  0  0  0  0  0  0  0
                  c         0  0  0  0  0  0  0  0  0
          B       a         0  0  0  0  0  0  0  0  0
                  b         0  0  0  0  0  0  0  0  0
                  c         0  0  0  0  0  0  0  0  0
2         A       a         0  0  0  0  0  0  0  0  0
                  b         0  0  0  0  0  0  0  0  0
          B       a         0  0  0  0  0  0  0  0  0

np.random.rand(9,9)
array([[ 0.27302806,  0.33926193,  0.01489047,  0.71959889,  0.43500806,
         0.03607795,  0.03747561,  0.43000199,  0.8091691 ],
       [ 0.96626878,  0.37613022,  0.7739084 ,  0.16724657,  0.01144436,
         0.0107722 ,  0.73513494,  0.13305542,  0.2910334 ],
       [ 0.00622779,  0.93699165,  0.62725798,  0.25009469,  0.14010666,
         0.61826728,  0.72060106,  0.58864557,  0.29375779],
       [ 0.14937979,  0.45269751,  0.68450964,  0.15986812,  0.69879559,
         0.06573519,  0.57504452,  0.49540882,  0.77283616],
       [ 0.60933817,  0.2701683 ,  0.69067959,  0.22806386,  0.79456502,
         0.75107457,  0.2805325 ,  0.27659171,  0.33446821],
       [ 0.82860687,  0.27055835,  0.37684942,  0.18962783,  0.59885119,
         0.31246936,  0.94522335,  0.53487273,  0.00611481],
       [ 0.27683582,  0.23653112,  0.41250374,  0.5024068 ,  0.27621212,
         0.81379001,  0.6704781 ,  0.87521485,  0.04577144],
       [ 0.95516958,  0.21844023,  0.86558273,  0.52300142,  0.91328259,
         0.7587479 ,  0.15201837,  0.15376074,  0.12092142],
       [ 0.36835891,  0.0381736 ,  0.36473176,  0.30510363,  0.19433639,
         0.43431018,  0.00112607,  0.35334684,  0.82307449]])

如何将 numpy 矩阵的值放入 panda 多索引矩阵中。这两个构造矩阵具有相同的结构,即numpy矩阵是没有标签索引的panda矩阵。

我找到了十几个将多索引 df 转换为 numpy 数组的示例,但不是以这种方式。 3 dimensional numpy array 的示例只有一个,但我的不是 3-d np 数组。

【问题讨论】:

df[:] = np.random.rand(9,9) 怎么样? 羞辱我!!是的,完美。我在寻找更复杂的东西。 确保数据顺序符合预期。 是的。颠簸矩阵是从 panda 结构创建的 numpy 矩阵的倒置矩阵。所以一切都是正确的。 【参考方案1】:

感谢迪瓦卡。 有事,就df[:] = np.random.rand(9,9),没关系。

【讨论】:

以上是关于将 numpy 数组复制到 Panda 多索引中(大小相同)的主要内容,如果未能解决你的问题,请参考以下文章

多索引中的标签输出

熊猫数据框检查索引是不是存在于多索引中

熊猫列多索引中的缺失值

多索引中的 Pandas 自定义排序行

Pandas 多索引数据框 - 从多索引中的一个索引中选择最大值

从隐藏在多索引中的年月创建日期时间