【问题标题】:Combining 2 dataframes结合2个数据框
【发布时间】:2015-09-01 21:40:58
【问题描述】:

我想合并 2 个相似的数据框。我检查了几个网站,但找不到我的问题的答案。

df1 = DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                 'B': ['B0', 'B1', 'B2', 'B3'],
                 'C': ['C0', 'C1', 'C2', 'C3'],
               index=[0, 1, 2])   
df2 = DataFrame({'A': ['A0', 'A1', 'A4', 'A3'],
                 'B': ['B0', 'B1', 'B4', 'B3'],
                 'D': ['D0', 'D1', 'D4', 'D3']},
               index=[0, 1, 2])

我想拥有

    df3 = DataFrame({'A': ['A0', 'A1', 'A3'],
                     'B': ['B0', 'B1', 'B3'],
                     'C': ['C0', 'C1', 'C3'],
                     'D': ['D0', 'D1', 'D3'].
                     index=[0, 1, 2, 3])   

基本上我组合了 2 个数据帧,将 D 列添加到第一个数据帧。但我省略了任何对 C 和 D 都没有值的行,例如第 2 行和第 4 行。 我试过 append 和 concat 但它只是给了我所有的列和所有的行堆叠在一起。

谢谢!

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    只需执行默认的merge,这将对公共列执行内部连接:

    In [80]:
    
    df1.merge(df2)
    Out[80]:
        A   B   C   D
    0  A0  B0  C0  D0
    1  A1  B1  C1  D1
    2  A3  B3  C3  D3
    

    【讨论】:

    • 谢谢。这正是我所需要的。还有一个问题:当我输入实际列名而不是 ABCD 时,输出数据框中的列总是按字母顺序排列,无论我输入它们的顺序是什么。因此,即使我在香蕉之后输入苹果,名为 apple 的列将始终位于香蕉列之前
    • 如果您询问如何重新排序列,您可以传递所需顺序的列表:df1.merge(df2).ix[:, ['A','D','B','C']] 将重新排序列,通常执行 df.ix[:, col_list] 其中col_list 是列列表将重新排序列顺序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2014-01-03
    • 2021-04-08
    相关资源
    最近更新 更多