代码之家  ›  专栏  ›  技术社区  ›  Nickpick

通过外部联接将熊猫数据帧与列表合并

  •  3
  • Nickpick  · 技术社区  · 6 年前

    我有一个数据框架,如下所示

       A  B
    0  1  4
    1  2  5
    2  3  6
    

    还有一个清单

    names = ['x','y']
    

    我想得到一个这样的数据帧,并与该列表进行外部连接。预期结果是:

       A  B  name
    0  1  4  x
    1  1  4  y
    2  2  5  x
    3  2  5  y
    4  3  6  x
    5  3  6  y
    
    3 回复  |  直到 6 年前
        1
  •  4
  •   jpp    6 年前

    使用 pd.concat :

    res = pd.concat([df.assign(name=i) for i in names], ignore_index=True)
    

    结果:

       A  B name
    0  1  4    x
    1  2  5    x
    2  3  6    x
    3  1  4    y
    4  2  5    y
    5  3  6    y
    
        2
  •  1
  •   BENY    6 年前

    使用附加键 merge

    df.assign(key=1).merge(pd.DataFrame({'Name':names,'key':1})).drop('key',1)
    Out[54]: 
       A  B Name
    0  1  4    x
    1  1  4    y
    2  2  5    x
    3  2  5    y
    4  3  6    x
    5  3  6    y
    
        3
  •  1
  •   piRSquared    6 年前

    理解力

    pd.DataFrame(
        [r + (n,) for r in zip(*map(df.get, df)) for n in names],
        columns=[*df.columns, *['name']]
    )
    
       A  B name
    0  1  4    x
    1  1  4    y
    2  2  5    x
    3  2  5    y
    4  3  6    x
    5  3  6    y