python - Pandas 数据框添加 2 个数据框

标签 python pandas dataframe

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

例如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)

我确定我遗漏了一些简单的东西,因为它似乎在尝试添加第一列(这是一个日期和我想要匹配的列以将所有其他列的值加在一起)但是任何帮助将不胜感激。

最佳答案

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

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

您使用 set_index()这样日期列就变成了索引。如果你不希望最终的数据帧被日期索引,你可以使用 reset_index()正如@MaxU 建议的那样,在最后。

关于python - Pandas 数据框添加 2 个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43351280/

相关文章:

Python QPushButton 设置图标 : put icon on button

python - 使用 panda 连接 2 个 csv 文件且不包含行索引

python - 卷积后切片,-1 索引不起作用

python - 带有 SVM 的 GridSearch 产生 IndexError

r - 嵌套 ifelse R 函数传递给 sapply() 以创建新的 data.frame

python - QLineEdit 设置标题大小写

python - 在 pandas Dataframe 中,如何插入行,然后将单元格值复制/粘贴到插入的行?

python - 使用多个 if-else 子句对 pandas 数据框进行矢量化以分割域

r - 根据另一列中的因子水平更改一列中的数值

python - 如何使用 python-docx 添加带有索引的数据框