[英]Adding two columns of lists together as new column in pandas dataframe
我構建了一個 Pandas 數據框,其中包含一些由列表組成的列,如下所示:
A B C List_A List_B
10 10 5 [0, 5, 1] [10, 12, 0]
5 7 8 [6, 7, 4] [5, 2, 1]
...
我想要做的是在包含基於List_A
和List_B
添加的新列表的數據框中添加一個附加列,如下所示:
A B C List_A List_B List_add
10 10 5 [0, 5, 1] [10, 12, 0] [10, 17, 1]
5 7 8 [6, 7, 4] [5, 2, 1] [11, 9, 5]
...
我進行了多次嘗試,但無濟於事。 我嘗試過的一些示例及其導致的錯誤
df['List_add'] = [x + y for x, y in zip(df['List_A'], df['List_B'])]
Error: TypeError: unsupported operand type(s) for +: 'float' and 'list'
和
df['List_add'] = np.add(df['List_A'], df['List_B'])
結果是將List_A
和List_B
串聯List_A
,而不是按值List_B
兩個值相加。
關於我如何進行的任何建議?
修復您的代碼
df['List_add'] = [[s + t for s,t in zip(x ,y)]for x, y in zip(df['List_A'], df['List_B'])]
df
Out[36]:
A B C List_A List_B List_add
0 10 10 5 [0, 5, 1] [10, 12, 0] [10, 17, 1]
1 5 7 8 [6, 7, 4] [5, 2, 1] [11, 9, 5]
df['List_add'] = a[['List_A', 'List_B']].applymap(np.array).values.sum(axis=1)
# List_A List_B List_add
# 0 [0, 5, 1] [10, 12, 0] [10, 17, 1]
# 1 [6, 7, 4] [5, 2, 1] [11, 9, 5]
編輯:要回答評論:如果您想划分新列表中的每個元素,您可以按如下方式進行:
DIVISOR = 5
df['List_add'] = a[['List_A', 'List_B']].applymap(np.array).values.sum(axis=1) / DIVISOR
# List_A List_B List_add
# 0 [0, 5, 1] [10, 12, 0] [2.0, 3.4, 0.2]
# 1 [6, 7, 4] [5, 2, 1] [2.2, 1.8, 1.0]
第一個答案的輸出是一個常規的二維numpy
數組,您可以將所有普通函數應用於(例如sum()
)
這里我用了一個簡單的代碼來解決這個問題:
df['List_add'] = list()
i = 0
while i < len(df['List_A']):
df['List_add'].append(df['List_A'][i] + df['List_B'][i])
i += 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.