开发者社区> 问答> 正文

pandas- 在非唯一日期合并两个df(外部联接)

python小能手 2019-02-28 13:45:52 375

我有两个df,我想以一种不同寻常的方式结合起来。

有问题的df:

df1:
Index colA
2012-01-02 1
2012-01-05 2
2012-01-10 3
2012-01-10 4
然后是df2:

Index colB
2012-01-01 6
2012-01-05 7
2012-01-08 8
2012-01-10 9
输出:

Index colA colB
2012-01-01 NaN 6
2012-01-02 1 NaN
2012-01-05 2 7
2012-01-08 NaN 8
2012-01-10 3 9
2012-01-10 4 NaN
如果df之间没有匹配的日期,很高兴有NaN输出。
如果有匹配的日期,我想返回两列。
可能存在单个日期具有例如的实例。df1中的20行和df2中的15行..它将匹配前15个(不关心排序),然后返回dn2中最后5行的NaN。
当我pd.merge()和其他人一起尝试这样做时,我不能这样做,因为日期对于索引来说显然不是唯一的。

有任何建议如何获得预期的行为?

分享到
取消 提交回答
全部回答(1)
  • python小能手
    2019-07-17 23:29:43

    您可能需要创建一个帮助键 cumcount

    df1=df1.assign(key=df1.groupby('Index').cumcount())
    df2=df2.assign(key=df2.groupby('Index').cumcount())
    fdf=df1.merge(df2,how='outer').drop('key',1).sort_values('Index')
    fdf
    Out[104]:

        Index  colA  colB

    4 2012-01-01 NaN 6.0
    0 2012-01-02 1.0 NaN
    1 2012-01-05 2.0 7.0
    5 2012-01-08 NaN 8.0
    2 2012-01-10 3.0 9.0
    3 2012-01-10 4.0 NaN

    0 0
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章
相似问题