在多个熊猫列中逐元素合并np.array

时间:2018-11-21 01:23:32

标签: python pandas numpy

我得到了一个熊猫数据框,其中有几列的值是np.array,我想将这些np.arrays合并为一个基于元素逐行的行。

例如

 col1          col2        col3 
[2.1, 3]      [4, 4]      [2, 3] 
[4, 5]        [6, 7]      [9, 9] 
[7, 8]        [8, 9]      [5, 4] 
...             ...         ...

预期结果:

col_f
[2.1, 3, 4, 4, 2, 3] 
[4, 5, 6, 7, 9, 9] 
[7, 8, 8, 9 5, 4] 

........

我使用一种for循环来实现它,但是只是想知道是否有更优雅的方法来实现它。

下面是我的for循环鳕鱼:

f_vector = []
for i in range(len(df.index)):
    vector = np.hstack((df['A0_vector'][i], items_df['A1_vector'][i], items_df['A2_vector'][i], items_df['A3_vector'][i], items_df['A4_vector'][i], items_df['A5_vector'][i])) 
    f_vector.append(vector)
X = np.array(f_vector)

1 个答案:

答案 0 :(得分:0)

您可以将numpy.concatenate与沿轴= 1一起应用:

import numpy as np
df['col_f'] = df[['col1', 'col2', 'col3']].apply(np.concatenate, axis=1)

如果这些是列表而不是np.arrays,则+运算符将起作用:

df['col_f'] = df['col1'] + df['col2'] + + df['col3']

注意:在下面的评论之后进行了编辑。