Pandas将列的值添加到不同的数据帧

时间:2016-08-15 18:53:30

标签: python pandas

所以我有一个DataFrame,df1,它有3列,A,B和C,如下所示:

                           A           B           C
Arizona                    0    2.800000    5.600000
California                 0   18.300000   36.600000
Colorado                   0    2.666667    5.333333
Connecticut                0    0.933333    1.866667
Delaware                   0    0.100000    0.200000
Florida                    0    0.833333    1.666667
Georgia                    0    0.000000    0.000000
Hawaii                     0    1.000000    2.000000
Illinois                   0    3.366667    6.733333
Indiana                    0    0.000000    0.000000
Iowa                       0    0.000000    0.000000

然后我有另一个数据帧df2,它只有一列,D:

                    D
Arizona            13
California         18
Colorado            5
Connecticut        15
Delaware            7
Florida             5
Georgia            13
Hawaii              3
Illinois           21
Indiana             2
Iowa                4

我想要做的是将D列的值添加到df1中的所有列。通过添加我的意思是取[亚利桑那州,A]的值并将其添加到[Arizona,D]的值,而不是将列D添加为新列。到目前为止,我尝试使用

df1 + df2 #returned all NaN
df1 + df2['D'] #Also returned all NaN
df1['A'] + df2['D'] #Returned a new dataframe with each as a separate column

我现在还不完全确定从哪里开始,所以我喜欢一些关于如何解决这个问题的建议。它似乎不应该是困难的,我可能会遗漏一些明显的东西。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以使用add()方法:

In [22]: df1.add(df2.D, axis='index')
Out[22]:
                A          B          C
Arizona      13.0  15.800000  18.600000
California   18.0  36.300000  54.600000
Colorado      5.0   7.666667  10.333333
Connecticut  15.0  15.933333  16.866667
Delaware      7.0   7.100000   7.200000
Florida       5.0   5.833333   6.666667
Georgia      13.0  13.000000  13.000000
Hawaii        3.0   4.000000   5.000000
Illinois     21.0  24.366667  27.733333
Indiana       2.0   2.000000   2.000000
Iowa          4.0   4.000000   4.000000

答案 1 :(得分:0)

你试图做这样的事吗?

df1 = DataFrame({'A':{'a':1, 'b':2}, 'B':{'a':10, 'b':20}})
df2 = DataFrame({'C':{'a':2, 'b':2}})
df1['A+C'] = df1['A'] + df2['C']
df1['B+C'] = df1['B'] + df2['C']

print (df1)
   A   B  A+C  B+C
a  1  10    3   12
b  2  20    4   22