添加具有不同尺寸和标签的矩阵

时间:2013-09-23 03:33:39

标签: python matrix pandas padding dimensions

我使用larry包用于python的2D标记矩阵,可能有不同的尺寸,我需要添加标签对齐的标签。拉里包装可以解决这个问题,但是需要相同的尺寸来添加两个基质。

但是对于我的任务,每个维度都有不同的标签。拉里在添加

时处理它

e.g:

la.add(lar1, lar2, join='inner')

但是期望lar1和lar2具有相同的尺寸,但是除了标签的不同排序之外,我的矩阵甚至可能具有不同的尺寸。

我想要的例子:

ADD([[1,2][3,4]],[[5,6,7][5,7,2]],label=[[A,B,C][X,Y]])

应该导致输出具有最大尺寸,在添加时填充缺少尺寸为零。

pandas包可以完成上述任务,也可以使用pandas给出答案吗? This link explains pandas已经对齐函数和重新索引函数来完成上述操作,但是如何通过自动重新标注和对齐来实现添加,有利于最大尺寸?

2 个答案:

答案 0 :(得分:1)

pandas会覆盖算术运算符,以完全按照您的意愿执行操作。目前,没有控制索引加入的选项。默认情况下,它们执行外连接:

In [39]: a = DataFrame([[1, 2], [3, 4]], columns=list('CD'), index=list('AB'))

In [40]: b = DataFrame([[1, 2, 5], [1, 3, 4], [6, 7, 8]], columns=list('CDY'), index=list('ABX'))

In [41]: a + b
Out[41]:
    C   D   Y
A   2   4 NaN
B   4   7 NaN
X NaN NaN NaN

关于此问题an open issue on GitHub

答案 1 :(得分:0)

我没有诉诸熊猫就找到答案,但仍然有兴趣知道如何在熊猫中完成同样的事情,解决方法是使用外部加入:

>>>a=larry([[1,2],[3,4]],label=[['A','B'],['C','D']])

>>> b=larry([[1,2,5],[1,3,4],[6,7,8]],label=[['A','B','X'],['C','D','Y']])
>>> a
label_0
    A
    B
label_1
    C
    D
x
array([[1, 2],
       [3, 4]])
>>> c=la.add(a,b)
>>> c
label_0
    A
    B
label_1
    C
    D
x
array([[2, 4],
       [4, 7]])
>>> c=la.add(a,b,join='outer')
>>> c
label_0
    A
    B
    X
label_1
    C
    D
    Y
x
array([[  2.,   4.,  nan],
       [  4.,   7.,  nan],
       [ nan,  nan,  nan]])




>>> c=la.add(a,b,join='outer',missone=0)
>>> c
label_0
    A
    B
    X
label_1
    C
    D
    Y
x
array([[ 2.,  4.,  5.],
       [ 4.,  7.,  4.],
       [ 6.,  7.,  8.]])
>>> a
label_0
    A
    B
label_1
    C
    D
x
array([[1, 2],
       [3, 4]])
>>> b
label_0
    A
    B
    X
label_1
    C
    D
    Y
x
array([[1, 2, 5],
       [1, 3, 4],
       [6, 7, 8]])
>>>