有没有办法使用 pands 将两列中的两个数组添加到第三个数组中

Is there a way to add two arrays in two columns in to a third array using pands

我正在开发一个使用 pandas 数据框的项目。所以在那里,我在下面的列中收到了一些值。

在那里,我需要添加此 Pos_vec 列和 word_vec 列并需要创建名为 sum_of_arrays 的新专栏。第三列的数组大小应该是2.

Eg: pos_vec                       Word_vec                        sum_of_arrays
   [-0.22683072, 0.32770252]      [0.3655883, 0.2535131]          [0.13875758,0.58121562] 

有没有人可以帮助我?我被困在这里了。 :(

使用 pandas 遍历列可能有更简洁的方法,但这是我通过从 DataFrame 中提取数据作为列表提出的解决方案:

# Extract data as lists
pos_vec = df["pos_vec"].tolist()
word_vec = df["word_vec"].tolist()

# Create new list with desired calculation
sum_of_arrays = [[x+y for x,y in zip(l1, l2)] for l1,l2 in zip(pos,word)]

# Add new list to DataFrame
df["sum_of_arrays"] = sum_of_arrays

如果将它们转换为 np.array,您可以简单地将它们相加。

import pandas as pd
import numpy as np
df = pd.DataFrame({'pos_vec':[[-0.22683072,0.32770252],[0.14382899,0.049593687],[-0.24300802,-0.0908088],[-0.2507714,-0.18816864],[0.32294357,0.4486494]],
                  'word_vec':[[0.3655883,0.2535131],[0.33788466,0.038143277], [-0.047320127,0.28842866],[0.14382899,0.049593687],[-0.24300802,-0.0908088]]})

如果你想使用numpy

df['col_sum'] = df[['pos_vec','word_vec']].applymap(lambda x: np.array(x)).sum(1)

如果你不想使用 numpy

df['col_sum'] = df.apply(lambda x: [sum(x) for x in zip(x.pos_vec,x.word_vec)], axis=1)