如何在列表列表中加入numpy中的2列?

时间:2015-10-20 10:45:27

标签: python numpy pandas

Dataframe是:

            date             ids_x               ids_y
0     2011-04-23  [0, 1, 2, 10, 11, 12, 13]       []
1     2011-04-24  [0, 1, 2, 10, 11, 12, 13]       [12,4]
2     2011-04-25  [0, 1, 2, 3, 4, 1, 12]          []
3     2011-04-26  [0, 1, 2, 3, 4, 5, 6]           [4,5,6]

方便但缓慢的方法是使用:

df['ids'] = df['ids_x'] + df['ids_y']

我想通过numpy实现此方法,现在它非常慢4 seconds。由于Pandas使用numpy我认为我应该使用numpy而不使用Pandas以减少开销。

我使用column_stack,但输出为:

a = np.array([[1,2,3],[4,5,6]])

b = np.array([[9,8,7],[6,5,4,6,7,8]])

np.column_stack((a,b))

[out]: array([[1, 2, 3, [9, 8, 7]], [4, 5, 6, [6, 5, 4, 6, 7, 8]]], dtype=object)

1 个答案:

答案 0 :(得分:1)

np.column_stack的问题在于b您没有等长列(因此dtype object

您可以使用np.concatenate(或@John Galt在评论np.append中说); e.g:

In [43]: [np.concatenate((i,j)) for i,j in zip(a,b)])
Out[43]: [array([1, 2, 3, 9, 8, 7]), array([4, 5, 6, 6, 5, 4, 6, 7, 8])]