【问题标题】:Pandas - merge two dataframes based off of intersection of columnsPandas - 基于列的交集合并两个数据框
【发布时间】:2020-03-27 05:18:49
【问题描述】:

我是数据框操作的新手。我一直在玩 df.merge、df.join、pd.concat 并且经常出现错误,而无法在没有重复的情况下合并。

我有两个要合并的代表性数据框。

df1 = pd.DataFrame({'1990' : 1, '1991': 2, '1992': 3}, index = ['a','b','c'])

df2 = pd.DataFrame({'1989':0,'1990' : 1, '1991': 2, '1992': 3, '1993': 4}, index = ['d'])

我想通过两个数据框的列的交集来合并它们,同时添加行。有没有办法使用数据框方法来做到这一点?

最终产品应如下所示:

【问题讨论】:

    标签: python pandas dataframe join merge


    【解决方案1】:

    使用concatinner 加入:

    df = pd.concat([df1, df2], join='inner')
    print (df)
       1990  1991  1992
    a     1     2     3
    b     1     2     3
    c     1     2     3
    d     1     2     3
    

    【讨论】:

    • 我之前就是这么做的,但收到了 ValueError。但是你的评论让我意识到这不是我做的不正确的 pd.concat 。相反,其中一个数据框具有重复的列键,导致连接出现问题。谢谢!为我节省了一个小时试图理解为什么我在努力合并事物....
    • @Will - 那么是否可以删除重复的列名?喜欢df1=df1.loc[:, ~df1.columns.duplicated()]
    • 对于我的情况,我无法删除重复的列 - 我现在只是使用 groupby 来处理它们。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2019-12-16
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多