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



我有两个数组;一种是小数组,另一种是大数组,如下所示

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中,匹配两个数组之间的行名和别名。

是否有简单的方法来执行此操作?

任何指针都会很有帮助

您可以updatebig_arrayin-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

最新更新