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

Python Dataframe添加两列,其中包含列表

  •  0
  • Mainland  · 技术社区  · 2 年前

    我有一个由两列组成的数据框架,每列都包含列表元素。我想对两个列表执行行元素加法。我下面的解决方案就是从这个答案中得到启发的 Element-wise addition of 2 lists?

    我的代码:

    df = pd.DataFrame({'A':[[1,2,3],[10,20]],'B':[[4,5,6],[40,50]]})
    
               A          B
    0  [1, 2, 3]  [4, 5, 6]
    1   [10, 20]   [40, 50]
    
    df['C'] = df[['A','B']].apply(lambda x: list(map(add,x[0],x[1])))
    df['C'] = 
        A   B
    0  11  44
    1  22  55
    

    预期答案:

    df['C'] = 
       C
    0 [5,7,9]
    1 [50,70]
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   enke    2 年前

    因为需要按行应用函数,所以只需要 axis=1 :

    from operator import add
    df['C'] = df[['A','B']].apply(lambda x: list(map(add,x[0],x[1])), axis=1)
    

    另一种选择是 explode 名单; sum ; 然后 groupby.agg 要重新获取列表,请执行以下操作:

    df['C'] = df.explode(['A','B']).sum(axis=1).astype(int).groupby(level=0).agg(list)
    

    输出:

               A          B          C
    0  [1, 2, 3]  [4, 5, 6]  [5, 7, 9]
    1   [10, 20]   [40, 50]   [50, 70]