簡體   English   中英

將兩列列表一起添加為熊貓數據框中的新列

[英]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_AList_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_AList_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM