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)
答案 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])]