【问题标题】:Merging/Concat/Joining two dataframes合并/连接/加入两个数据框
【发布时间】:2021-11-13 19:42:59
【问题描述】:

我有一个带有不同代码标识符的 pandas 数据框,详情如下:

df1 = pd.DataFrame([['a', 1], ['b', 2],['c', 3],['d', 4],['e', 5],['f', 5]],
                   columns=['code', 'value1'])

第二个数据框如下

df2 = pd.DataFrame([['a', 11], ['b', 12],['c', 13],['d', 14],['e', 15],['f', 16],['g', 17], ['h', 2],['i', 3],['j', 4],['k', 5],['l', 5]],
                   columns=['code', 'value2'])

我只想查看 df1 中标识的代码(即 a-f),并有一个名为 value2 的第三列。

我试过了

df1 = df1.join(df2, on = '代码')

但我一直得到 NaN 的值

我查看了几个地方并看到了合并、连接和连接,但它们似乎都不起作用

【问题讨论】:

  • 你想要的输出是什么?

标签: python pandas join merge concatenation


【解决方案1】:

试试这个:

df1 = df1.merge(df2, on = 'code')

因为您将列命名为“代码”而不是“代码”

【讨论】:

    【解决方案2】:

    用途:

    >>> df1.merge(df2, how='inner', on='code')
        code    value1  value2
    0   a   1   11
    1   b   2   12
    2   c   3   13
    3   d   4   14
    4   e   5   15
    5   f   5   16
    

    或者你的意思是how='outer'merge

    >>> df1.merge(df2, how='outer', on='code')
       code  value1  value2
    0     a     1.0      11
    1     b     2.0      12
    2     c     3.0      13
    3     d     4.0      14
    4     e     5.0      15
    5     f     5.0      16
    6     g     NaN      17
    7     h     NaN       2
    8     i     NaN       3
    9     j     NaN       4
    10    k     NaN       5
    11    l     NaN       5
    >>> 
    

    【讨论】:

      【解决方案3】:

      要仅查看 df1 中标识的代码(即 a-f)并具有标题为 value2 的第三列,您应该使用 merge 方法与 how='inner'on='code

      >>> df1.merge(df2, how='inner', on='code')
          code    value1  value2
      0   a   1   11
      1   b   2   12
      2   c   3   13
      3   d   4   14
      4   e   5   15
      5   f   5   16
      

      【讨论】:

        猜你喜欢
        • 2020-05-07
        • 1970-01-01
        • 2014-03-23
        • 2018-09-27
        • 2011-01-03
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        相关资源
        最近更新 更多