python - 按日期添加两个大小不同的数据框
问题描述
我有两个需要添加在一起的数据框。
这两个数据框可能如下所示:
df1 =
date col1 col2
01-01-20 1 2
02-01-20 2 4
03-01-20 3 6
04-01-20 4 8
05-01-20 5 10
df2 =
date col1 col2
03-01-20 1 2
04-01-20 2 4
05-01-20 3 6
现在,我目前正在做的只是:
df_sum = df1.set_index("date") + df2.set_index("date")
返回:
df_sum =
01-01-20 NaN NaN
02-01-20 NaN NaN
03-01-20 4 8
04-01-20 6 12
05-01-20 8 16
但我想要的是:
df_sum_correct =
01-01-20 1 2
02-01-20 2 4
03-01-20 4 8
04-01-20 6 12
05-01-20 8 16
因此,不是转换日期不相等的行,而是保留实际具有该日期值的数据框中的值,而不是将日期不相等的行中的所有值转换为NaN
.
如何才能做到这一点 ?
解决方案
DataFrame.add
与fill_value
参数一起使用:
df_sum = df1.set_index("date").add(df2.set_index("date"), fill_value=0)
或concat
使用聚合sum
:
df_sum = pd.concat([df1, df2]).groupby("date").sum()
推荐阅读
- javascript - 如何在 React 中将事件从子组件传递到父组件回传给另一个子组件
- sqlite - sqlite数据库位置节点-红色
- php - 在 WordPress 中记住我而不检查记住我
- python - 有没有办法在不使用 for 循环的情况下在 Python 中抓取图像的多个切片(最后一个通道的 numpy 数组)?
- mysql - MySQL失去连接->操作完成?
- c# - 为每个线程声明一个变量并在 c# Parallel.Foreach 中管理它们
- javascript - 在运行时使用“数据背景”和“数据键盘”阻止模式?
- assembly - C汇编转换0xffffffff
- java - 从 Spring Boot 中序列化 DTO,但在 Spring Boot 中反序列化它
- python - 如何从组中的每个其他值计算每个组中的第一个值以计算随时间的变化?