我有一个由两列组成的数据框架,每列都包含列表元素。我想对两个列表执行行元素加法。我下面的解决方案就是从这个答案中得到启发的 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]
因为需要按行应用函数,所以只需要 axis=1 :
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 要重新获取列表,请执行以下操作:
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]