熊猫连接两个数据帧,而一列连接又保持一列?

时间:2020-07-01 08:28:47

标签: python pandas

输入

df1

id      date      v1
a    2020-1-1     1
a    2020-1-2     2
b    2020-1-4     10
b    2020-1-22    30
c    2020-2-4     10
c    2020-2-22    30


df2

id      date      v1
a    2020-1-3     1
b    2020-1-7     12
b    2020-1-22    13
c    2020-2-10    15
c    2020-2-22    60

目标

id      date      v1   v2
a    2020-1-1     1    0
a    2020-1-2     2    0
a    2020-1-3     0    1
b    2020-1-4     10   0
b    2020-1-7     0    12
b    2020-1-22    30   13
c    2020-2-4     10   0
c    2020-2-10     0   15
c    2020-2-22    30   60

详细信息:

  • 对于每个id,只有两个数据框,日期是唯一的。
  • 基于df将两个数据帧合并为id,每个id包含来自两个数据帧的所有日期值
  • 新合并数据框包含v1和v2列,而df1df2中的日期返回原始值,而日期仅包含df1和{{1}中的一个},它将返回原始值,如果日期没有值,则返回0。

尝试
我已经搜索了合并的concat文档,但是找不到答案。

1 个答案:

答案 0 :(得分:1)

首先将列转换为日期时间以按to_datetime正确排序,然后将DataFrame.merge进行外部联接,并为v1重命名列df2以避免v1_x和{输出中的{1}}列,用DataFrame.fillna替换缺少的值,按DataFrame.sort_values排序输出:

v1_y