将Mx1大小的数据帧添加到Pandas中的MxN大小数据帧

时间:2014-09-12 08:42:21

标签: python pandas

我想添加此数据框

数据帧1(大小3X1):

>> df1
   0
0  2.0
1  1.0
2  3.0

到这个数据框:

数据帧2(大小3x3):

>> # actually number of columns > 3
>> df2
    0   1    2
0  100  200 300
1  110  210 310
2  120  220 320

屈服:

   0   1    2
0  102  202 302
1  111  211 311
2  123  223 323

即根据相应的行,将d1添加到d2中的每一列。 但为什么这不会做:

>> df1 + df2
        0   1    2
    0  102  NA NA
    1  111  NA NA
    2  123  NA NA

做正确的方法是什么?

2 个答案:

答案 0 :(得分:2)

复制第一个数据框中的列,然后添加两个数据框将是继续进行的方式之一。

>>> import pandas as pd
>>> pd.concat(3*[df1], axis=1, ignore_index=True) + df2
     0    1    2
0  102  202  302
1  111  211  311
2  123  223  323

我假设你知道你需要多少次连接列(这里是3)!

答案 1 :(得分:2)

不对索引做出假设,如果它们是否对齐,您可以先使用.reindex_axis对齐行,然后在.values上使用numpy广播规则,最后重构帧:

>>> df1.values + df2.reindex_axis(df1.index).values
array([[ 102.,  202.,  302.],
       [ 111.,  211.,  311.],
       [ 123.,  223.,  323.]])
>>> pd.DataFrame(_, columns=df2.columns, index=df2.index)
     0    1    2
0  102  202  302
1  111  211  311
2  123  223  323