有没有办法使用 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)
我正在开发一个使用 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)