web-dev-qa-db-ja.com

配列のリストをpandas dataframeに変換します

DataFrameに変換しようとしているnumpy配列のリストがあります。各配列はデータフレームの行である必要があります。

Pd.DataFrame()を使用しても機能しません。常にエラーが発生します:ValueError:2-d入力を渡す必要があります。

これを行うためのより良い方法はありますか?

これは私の現在のコードです:

list_arrays = array([[0, 0, 0, 1, 0, 0, 0, 0, 00]], dtype=uint8), array([[0, 0, 3, 2, 0, 0, 0, 0, 00]], dtype=uint8)]

d = pd.DataFrame(list_of_arrays)

ValueError: Must pass 2-d input
6
Marcos Santana

オプション1:

_In [143]: pd.DataFrame(np.concatenate(list_arrays))
Out[143]:
   0  1  2  3  4  5  6  7  8
0  0  0  0  1  0  0  0  0  0
1  0  0  3  2  0  0  0  0  0
_

オプション2:

_In [144]: pd.DataFrame(list(map(np.ravel, list_arrays)))
Out[144]:
   0  1  2  3  4  5  6  7  8
0  0  0  0  1  0  0  0  0  0
1  0  0  3  2  0  0  0  0  0
_

なぜ私は得る:

_ValueError: Must pass 2-d input_

pd.DataFrame()は次のようにNDArrayに変換しようとすると思います。

_In [148]: np.array(list_arrays)
Out[148]:
array([[[0, 0, 0, 1, 0, 0, 0, 0, 0]],

       [[0, 0, 3, 2, 0, 0, 0, 0, 0]]], dtype=uint8)

In [149]: np.array(list_arrays).shape
Out[149]: (2, 1, 9)     # <----- NOTE: 3D array
_
8
MaxU

Alt 1

pd.DataFrame(sum(map(list, list_arrays), []))

   0  1  2  3  4  5  6  7  8
0  0  0  0  1  0  0  0  0  0
1  0  0  3  2  0  0  0  0  0

Alt 2

pd.DataFrame(np.row_stack(list_arrays))

   0  1  2  3  4  5  6  7  8
0  0  0  0  1  0  0  0  0  0
1  0  0  3  2  0  0  0  0  0
5
piRSquared

ここに一つの方法があります。

import numpy as np, pandas as pd

lst = [np.array([[0, 0, 0, 1, 0, 0, 0, 0, 0]], dtype=int),
       np.array([[0, 0, 3, 2, 0, 0, 0, 0, 0]], dtype=int)]

df = pd.DataFrame(np.vstack(lst))

#    0  1  2  3  4  5  6  7  8
# 0  0  0  0  1  0  0  0  0  0
# 1  0  0  3  2  0  0  0  0  0
3
jpp

pd.Seriesを使用できます

pd.Series(l).apply(lambda x : pd.Series(x[0]))
Out[294]: 
   0  1  2  3  4  5  6  7  8
0  0  0  0  1  0  0  0  0  0
1  0  0  3  2  0  0  0  0  0
2
WeNYoBen