鑑於熊貓陣列
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
鑑於熊貓陣列
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
另一個: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