熊猫阵列
问题描述:
鉴于熊猫阵列
data= [
(array([0,0,1]),1),
(array([0,1,1]),1),
(array([1,0,1]),0),
(array([1,1,1]),1)
]
怎样才能将其转换成一个数据帧大熊猫使每列是独立的?
A B C Z
0 0 1 1
0 1 1 1
1 0 1 0
1 1 1 1
答
我会在列表理解
pd.DataFrame([np.append(*row) for row in data], columns=list('ABCZ'))
A B C Z
0 0 0 1 1
1 0 1 1 1
2 1 0 1 0
3 1 1 1 1
或者更有效地与np.column_stack
和zip
pd.DataFrame(np.column_stack(list(zip(*data))), columns=list('ABCZ'))
A B C Z
0 0 0 1 1
1 0 1 1 1
2 1 0 1 0
3 1 1 1 1
定时使用np.append
%timeit pd.DataFrame([np.append(*row) for row in data], columns=list('ABCZ'))
1000 loops, best of 3: 460 µs per loop
%timeit pd.DataFrame(np.column_stack(list(zip(*data))), columns=list('ABCZ'))
10000 loops, best of 3: 130 µs per loop
%timeit pd.DataFrame([e[0].tolist()+[e[1]] for e in data],columns=['A','B','C','Z'])
1000 loops, best of 3: 446 µs per loop
+0
另一个:temp1,temp2 = np.dstack(data)[0] - pd.DataFrame(np.vstack([np.vstack(temp1).T,temp2]),columns = list('ABCZ') ),但速度不如zip –
答
将您的数组转换为列表列表,然后将其放入数据框中。
pd.DataFrame([e[0].tolist()+[e[1]] for e in data],columns=['A','B','C','Z'])
Out[265]:
A B C Z
0 0 0 1 1
1 0 1 1 1
2 1 0 1 0
3 1 1 1 1
如果您有兴趣,我会更新我的答案。 – piRSquared