
[code]

    array([[-1,  0,  1,  1,  1,  0,  2,  3,  4,  5,  6,  7,  8,  7,  0],
           [-1,  9, 10, 11, 12, 11, 13, 11, 14, 11, 15, 12, 16, 17, 18],
           [-1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
           [-1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
           [-1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
           [-1, 19, 20, 19, 21, 22, 23, 23, 22, 24, 22,  0,  0,  0,  0]])
    
[/code]

上記をpandasのDFにしようとすると以下のエラーがでます。  
なぜでるのでしょうか。ちなみに、A=[上記同じ形での値]で実行するとエラーにならないです。

実行コード

[code]

    statistic = pd.DataFrame({
        "label" : labels,
        "feature1" : features,
    })
    
[/code]

エラー内容

[code]

    ---------------------------------------------------------------------------
    Exception                                 Traceback (most recent call last)
    <ipython-input-28-8de74a8845ff> in <module>
          5 statistic = pd.DataFrame({
          6     "label" : labels,
    ----> 7     "feature1" : features,
          8 })
          9 
    
    ~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py in __init__(self, data, index, columns, dtype, copy)
        409             )
        410         elif isinstance(data, dict):
    --> 411             mgr = init_dict(data, index, columns, dtype=dtype)
        412         elif isinstance(data, ma.MaskedArray):
        413             import numpy.ma.mrecords as mrecords
    
    ~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\internals\construction.py in init_dict(data, index, columns, dtype)
        255             arr if not is_datetime64tz_dtype(arr) else arr.copy() for arr in arrays
        256         ]
    --> 257     return arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype)
        258 
        259 
    
    ~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\internals\construction.py in arrays_to_mgr(arrays, arr_names, index, columns, dtype)
         80 
         81     # don't force copy because getting jammed in an ndarray anyway
    ---> 82     arrays = _homogenize(arrays, index, dtype)
         83 
         84     # from BlockManager perspective
    
    ~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\internals\construction.py in _homogenize(data, index, dtype)
        321                 val = lib.fast_multiget(val, oindex.values, default=np.nan)
        322             val = sanitize_array(
    --> 323                 val, index, dtype=dtype, copy=False, raise_cast_failure=False
        324             )
        325 
    
    ~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\internals\construction.py in sanitize_array(data, index, dtype, copy, raise_cast_failure)
        727     elif subarr.ndim > 1:
        728         if isinstance(data, np.ndarray):
    --> 729             raise Exception("Data must be 1-dimensional")
        730         else:
        731             subarr = com.asarray_tuplesafe(data, dtype=dtype)
    
    Exception: Data must be 1-dimensional
    
[/code]


CC BY-SA 4.0
2019-12-14T09:35:45.110
61435
2020-07-14T02:01:25.123
2019-12-14T10:31:03.613
3060
question
python python3 pandas numpy
pandasにて一次元へというエラーがでる


エラーメッセージにあるとおり、`labels`や`features`は1次元の配列データの必要があるからです。  
[pandas.DataFrame](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.DataFrame.html)

> Examples  
>  Constructing DataFrame from a dictionary.
[code]

>     >>> d = {'col1': [1, 2], 'col2': [3, 4]}
>     >>> df = pd.DataFrame(data=d)
>     >>> df
>        col1  col2
>     0     1     3
>     1     2     4
>  
[/code]

例えばこんな風にすれば正常に通りますよ。

[code]

    statistic = pd.DataFrame({
        "label" : ["labels"],
        "feature1" : ["features"],
    })
    
[/code]

こんな形になります。

[code]

    >>> statistic
        label  feature1
    0  labels  features
    
[/code]

あるいはこんな風に`labels`や`features`を1次元の配列データの変数として定義するとか。

[code]

    labels = [-1,  0,  1,  1,  1,  0,  2,  3,  4,  5,  6,  7,  8,  7,  0]
    features = [-1,  9, 10, 11, 12, 11, 13, 11, 14, 11, 15, 12, 16, 17, 18]
    
    statistic = pd.DataFrame({
        "label" : labels,
        "feature1" : features,
    })
    
[/code]

こちらはこうですね。

[code]

    >>> statistic
        label  feature1
    0      -1        -1
    1       0         9
    2       1        10
    3       1        11
    4       1        12
    5       0        11
    6       2        13
    7       3        11
    8       4        14
    9       5        11
    10      6        15
    11      7        12
    12      8        16
    13      7        17
    14      0        18
    
[/code]

`A=`で正常に出来ているであろう形はこんなでしょうか？

[code]

    A =   [[-1,  0,  1,  1,  1,  0,  2,  3,  4,  5,  6,  7,  8,  7,  0],
           [-1,  9, 10, 11, 12, 11, 13, 11, 14, 11, 15, 12, 16, 17, 18],
           [-1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
           [-1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
           [-1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
           [-1, 19, 20, 19, 21, 22, 23, 23, 22, 24, 22,  0,  0,  0,  0]]
    statistic = pd.DataFrame(A)
    >>> statistic
       0   1   2   3   4   5   6   7   8   9  10  11  12  13  14
    0 -1   0   1   1   1   0   2   3   4   5   6   7   8   7   0
    1 -1   9  10  11  12  11  13  11  14  11  15  12  16  17  18
    2 -1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    3 -1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    4 -1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    5 -1  19  20  19  21  22  23  23  22  24  22   0   0   0   0
    
[/code]

* * *

もしかすると実際にやりたいのは、`labels`に各列(横軸)、`features`に各行(縦軸)の名前(あるいは縦横が逆でも)が入っているDataFrameを作りたいのでしょうか？  
その場合は、以下のようになると思います。

[code]

    statistic = pd.DataFrame(A,
        columns=labels,
        index=features
    )
    
[/code]

とか、

[code]

    statistic = pd.DataFrame(A,
        columns=features,
        index=labels
    )
    
[/code]

参考：  
[pandas.DataFrameの構造とその作成方法](https://note.nkmk.me/python-pandas-dataframe-
values-columns-index/)

>
[code]

>     df = pd.DataFrame(np.arange(12).reshape(3, 4),
>                       columns=['col_0', 'col_1', 'col_2', 'col_3'],
>                       index=['row_0', 'row_1', 'row_2'])
>  
>     print(df)
>     #        col_0  col_1  col_2  col_3
>     # row_0      0      1      2      3
>     # row_1      4      5      6      7
>     # row_2      8      9     10     11
>  
[/code]

* * *

**追加質問に対して**  
例えば：

[code]

    statistic = pd.DataFrame(A)
    
[/code]

と

[code]

    statistic = pd.DataFrame(features)
    
[/code]

なら同じ扱いとなります。

`features`をデータとして、`labels`を列名として扱いたいなら、以下のようになります。

[code]

    labels = ['C0','C1','C2','C3','C4','C5']
    features = [[1, 2, 3, 4, 5, 6],
                [7, 8, 9, 10, 11, 12],
                [13, 14, 15, 16, 17, 18],
                [19, 20 ,21, 22, 23, 24],
                [25, 26, 27, 28, 29, 30]]
    
    statistic = pd.DataFrame(features,
        columns=labels
    )
    
[/code]

結果はこうなります。

[code]

    >>> statistic
       C0  C1  C2  C3  C4  C5
    0   1   2   3   4   5   6
    1   7   8   9  10  11  12
    2  13  14  15  16  17  18
    3  19  20  21  22  23  24
    4  25  26  27  28  29  30
    
[/code]

* * *

ただ、@metropolisさんのコメントも微妙に違うような？  
こんな結果になるようですが、これが望んだ形なのでしょうか？  
それとも使い方が悪いのでしょうか？

[code]

    >>> statistic = pd.DataFrame({'feature1': iter(features)})
    >>> statistic
                       feature1
    0        [1, 2, 3, 4, 5, 6]
    1     [7, 8, 9, 10, 11, 12]
    2  [13, 14, 15, 16, 17, 18]
    3  [19, 20, 21, 22, 23, 24]
    4  [25, 26, 27, 28, 29, 30]
    
[/code]


CC BY-SA 4.0
2019-12-14T10:33:52.940
61436
2019-12-14T12:02:04.003
2019-12-14T12:02:04.003
26370
26370
61435
answer


以下の同じfeaturesですが、何が違うのでしょうか。

[code]

    array([[-1,  0,  1,  1,  1,  0,  2,  3,  4,  5,  6,  7,  8,  7,  0],
           [-1,  9, 10, 11, 12, 11, 13, 11, 14, 11, 15, 12, 16, 17, 18],
           [-1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
           [-1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
           [-1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
           [-1, 19, 20, 19, 21, 22, 23, 23, 22, 24, 22,  0,  0,  0,  0]])
    
[/code]

[code]

    features = [[1, 2, 3, 4, 5, 6],\
                [7, 8, 9, 10, 11, 12],\
                [13, 14, 15, 16, 17, 18],\
                [19, 20 ,21, 22, 23, 24],\
                [25, 26, 27, 28, 29, 30]]
    
[/code]


CC BY-SA 4.0
2019-12-14T11:19:16.047
61438
2019-12-14T11:19:16.047
61435
answer