【问题标题】:Merge a pandas dataframe with a list through an outer join通过外部连接将 pandas 数据框与列表合并
【发布时间】:2019-02-16 01:31:54
【问题描述】:

我有一个如下所示的数据框

   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

【问题讨论】:

    标签: python pandas list


    【解决方案1】:

    理解

    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
    

    【讨论】:

      【解决方案2】:

      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】:

        使用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
        

        【讨论】:

          猜你喜欢
          • 2015-11-16
          • 1970-01-01
          • 1970-01-01
          • 2021-12-14
          • 2016-08-13
          • 1970-01-01
          • 2019-07-03
          • 2020-05-24
          • 2015-11-25
          相关资源
          最近更新 更多