Pandas数据帧添加了2个数据帧

时间:2017-04-11 16:17:16

标签: python pandas dataframe

我需要能够将具有相同结构的两个数据帧的值相加,并形成一个新的数据帧。

e.g。 DF1 + DF2 = DF3

DF1
+------------+----+----+----+
|    date    |  A |  B |  C |
+------------+----+----+----+
| 2017-01-01 | 24 | 15 |  4 |
| 2017-01-02 | 31 | 10 | 12 |
| 2017-01-03 |  9 | 47 |  3 |
+------------+----+----+----+

DF2
+------------+----+----+----+
|    date    |  A |  B |  C |
+------------+----+----+----+
| 2017-01-01 |  4 | 12 | 63 |
| 2017-01-02 | 23 |  0 | 31 |
| 2017-01-03 | 61 | 22 | 90 |
+------------+----+----+----+

DF3
+------------+----+----+----+
|    date    |  A |  B |  C |
+------------+----+----+----+
| 2017-01-01 | 28 | 27 | 67 |
| 2017-01-02 | 64 | 10 | 43 |
| 2017-01-03 | 70 | 69 | 93 |
+------------+----+----+----+

我一直在努力弄清楚如何做到这一点,但我得到了一个TypeError

TypeError: unsupported operand type(s) for +: 'datetime.date' and 'datetime.date'

尝试时:

df3 = df1.add(df2, fill_value=0)

我确定我错过了一些简单的东西,因为它似乎试图添加第一列(这是一个日期和我希望匹配的列,以便为所有其他列添加值)但是任何帮助非常感谢。

1 个答案:

答案 0 :(得分:4)

您希望date列是索引,而不是普通列:

df3 = df1.set_index('date').add(df2.set_index('date'), fill_value=0).reset_index()

您使用set_index(),以便日期列成为索引。如果您不希望最终数据框被日期编入索引,则可以在@MaxU建议的最后使用reset_index()