将一个小数组放入一个大数组

Place a small array into a big array

我有2个数组;一个是小数组,第二个是大数组如下,

import pandas as pd
import numpy as np
dat1 = np.array([2, 3 ,4 ,4 ,3 ,2, 2, 4 ,3 ,4 ,4, 3])
dat2 = np.array([1, 4 ,4, 4, 2 ,1, 3 ,3 ,2, 3, 3, 1])
small_array = pd.crosstab(dat1, dat2)

big_array = pd.DataFrame(np.zeros(6*6).reshape(6,6), columns=[1,3,4,2,6,5], index=[3,4,1,2,5,6])

现在我想将 small_array 放入 big_array 以匹配两个数组之间的行名和列名。

有什么简单的方法可以做到这一点吗?

任何指针都会很有帮助

你可以update big_array in-place:

big_array.update(small_array)
print(big_array)

如果你想创建一个新的DataFrame,你可以使用combine_first:

out = small_array.combine_first(big_array)

输出:

     1    3    4    2    6    5
3  1.0  0.0  1.0  2.0  0.0  0.0
4  0.0  3.0  2.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0  0.0  0.0
2  2.0  1.0  0.0  0.0  0.0  0.0
5  0.0  0.0  0.0  0.0  0.0  0.0
6  0.0  0.0  0.0  0.0  0.0  0.0

让我们试试reindex_like

out = small_array.reindex_like(big_array).fillna(0)
Out[494]: 
     1    3    4    2    6    5
3  1.0  0.0  1.0  2.0  0.0  0.0
4  0.0  3.0  2.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0  0.0  0.0
2  2.0  1.0  0.0  0.0  0.0  0.0
5  0.0  0.0  0.0  0.0  0.0  0.0
6  0.0  0.0  0.0  0.0  0.0  0.0