我有一個兩列的資料框,每列都包含串列作為元素。我想執行兩個串列的逐行元素添加。我下面的解決方案的靈感來自這個答案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]
uj5u.com熱心網友回復:
由于您需要逐行應用函式,因此您只需要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]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/468419.html
上一篇:根據先前的分組構建新列
