将2D numpy数组转换为dataframe行

时间:2017-08-30 14:02:11

标签: python pandas numpy dataframe

我有一个列表列表,我希望将其作为一行。我得到的最接近的是post。但是,我无法得到答案。

例如,假设我有testarray个值,

([[ 26.85406494], 
   [ 27.85406494],
   [ 28.85406494],
   [ 29.85406494],
   [ 30.85406494],
   [ 31.85406494],
   [ 32.85406494],
   [ 33.85406494],
   [ 34.85406494],
   [ 35.85406494],
   [ 36.85406494],
   [ 37.85406494],
   [ 38.85406494],
   [ 39.85406494],
   [ 40.85406494],
   [ 41.85406494]])

我需要像这样的pandas DataFrame行,

  Row_value
0 26.85406494
1 27.85406494
2 29.85406494
...

我尝试了以下内容,

df = pd.DataFrame({'Row_value':testarray})

我收到错误,

  

ValueError:如果使用所有标量值,则必须传递索引

如何使用索引传递这些值?

2 个答案:

答案 0 :(得分:4)

仅将DataFrame构造函数用于参数列:

df = pd.DataFrame(a, columns=['a'])
print (df)
            a
0   26.854065
1   27.854065
2   28.854065
3   29.854065
4   30.854065
5   31.854065
6   32.854065
7   33.854065
8   34.854065
9   35.854065
10  36.854065
11  37.854065
12  38.854065
13  39.854065
14  40.854065
15  41.854065

答案 1 :(得分:2)

尝试.reshape(-1, )

df = pd.DataFrame({'Row_value':testarray.reshape(-1, )})
df

    Row_value
0   26.854065
1   27.854065
2   28.854065
3   29.854065
4   30.854065
5   31.854065
6   32.854065
7   33.854065
8   34.854065
9   35.854065
10  36.854065
11  37.854065
12  38.854065
13  39.854065
14  40.854065
15  41.854065

看起来您的testarray是一个包含1列的2D数组。将其转换为1D数组。

替代方法是不传递字典,而是按原样传递testarray,就像在jezrael的答案中一样。