2017-11-22 10 views
0

私はfloat(myarray)で8 * 4 numpyの配列を持ち、データフレームの辞書に変換したいPythonでパンダを使っています。私はエラーを越えて来ている "ValueError:DataFrameコンストラクタが正しく呼び出されていない!"しかし、。ここで私はそれを試みる方法です:np.array to dataframes:ValueError:DataFrameコンストラクタが正しく呼び出されていない

mydict={} 
    for i, y in enumerate(np.arange(2015,2055,5)): 
     for j, s in enumerate(['Winter', 'Spring', 'Summer', 'Fall']): 
     mydict[(y,s)]=pd.DataFrame(myarray[i,j]) 
    mydict 

すべてのアイデア?ありがとう!

array([[ 29064908.33333333, 33971366.66666667, 37603508.33333331, 
    37105916.66666667], 
    [ 25424991.66666666, 30156625.  ,3324.99999999, 
    31705075.  ], 
    [ 26972666.66666666, 28182699.99999995, 30614324.99999999, 
    29673008.33333333], 
    [ 26923466.66666666, 27573075.  , 28308725.  , 
    27834291.66666666], 
    [ 26015216.66666666, 28709191.66666666, 30807833.33333334, 
    27183991.66666684], 
    [ 25711475.  , 32861633.33333332, 35784916.66666666, 
    28748891.66666666], 
    [ 26267299.99999999, 35030583.33333331, 37863808.33333329, 
    29931858.33333332], 
    [ 28871674.99999998, 38477549.99999999, 40171374.99999999, 
    33853750.  ]]) 

と予想される出力:

  2015 2020 2025 2030 2035 2040 2045 2050 
    Winter 2.9e+07 2.5e+07 2.6e+07 2.6e+07 2.6e+07 2.5e+07 2.6e+07 2.8e+07 
    Spring 3.3e+07 3.0e+07 2.8e+07 2.7e+07 2.8e+07 3.2e+07 3.5e+07 3.8e+07 
    Summer 3.7e+07 3.2e+07 3.0e+07 2.8e+07 3.0e+07 3.5e+07 3.7e+07 4.0e+07 
    Fall 3.7e+07 3.1e+07 2.9e+07 2.7e+07 2.7e+07 2.8e+07 2.9e+07 3.3e+07 
+0

予想される出力とともにいくつかのサンプルデータが表示されますか?これは、あなたが望むことをする素晴らしい方法ではないかもしれません。 [mcve]を提供してください。 –

答えて

0

あなただけDataFrameコンストラクタを使用して、すべてのことをする必要はありません - それはそれはのためだものです:

In [10]: idx = ['Winter', 'Spring', 'Summer', 'Fall'] 

In [11]: cols = np.arange(2015,2055,5) 

In [12]: pd.DataFrame(myarray.T, index=idx, columns=cols) 
Out[12]: 
       2015   2020   2025   2030   2035 \ 
Winter 2.906491e+07 2.542499e+07 2.697267e+07 2.692347e+07 2.601522e+07 
Spring 3.397137e+07 3.015662e+07 2.818270e+07 2.757308e+07 2.870919e+07 
Summer 3.760351e+07 3.210332e+07 3.061432e+07 2.830872e+07 3.080783e+07 
Fall 3.710592e+07 3.170508e+07 2.967301e+07 2.783429e+07 2.718399e+07 

       2040   2045  2050 
Winter 2.571148e+07 2.626730e+07 28871675.0 
Spring 3.286163e+07 3.503058e+07 38477550.0 
Summer 3.578492e+07 3.786381e+07 40171375.0 
Fall 2.874889e+07 2.993186e+07 33853750.0 

あなたは、単に使用できるようにするだけ、あなたは、配列の転置をしたい、注意してくださいmyarray.T

+0

それは公正な点です、ずっと簡単です!なぜ私はすべてのことをしたのか説明してください:通常、私は大きな次元(2次元ではない)で作業します。つまり、DataFrameコンストラクタがn次元配列(n> 2)を受け入れないということです。したがって、私が最初に投稿したことをそれに対処するために、データフレームの辞書を作成し、後にそれらを連結します。そうするより良い方法があるだろうか? –

0
mydict = {} 

myarray = np.random.rand(8, 4) 

for i, y in enumerate(range(2015, 2055, 5)): 
    for j, s in enumerate(['Winter', 'Spring', 'Summer', 'Fall']): 
     mydict[str(y) + ' ' + s] = myarray[i, j] 

df = pd.DataFrame(mydict, index = [0]).transpose() 
df.columns = ['Measure'] 

df 

私は完全にここで使用するインデックスを理解していない要求された、いくつかのサンプルデータとして

関連する問題