将 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 多索引中(大小相同)的主要内容,如果未能解决你的问题,请参考以下文章