2017-08-14 99 views
0

我试图将numpy nd数组转换成熊猫列, 但数据与括号来。numpy nd数组到熊猫列没有[]

这是我的NP阵列:

array([[[ 7.10105920e+07], 
     [ 9.18736320e+07], 
     [ 8.35562800e+07], 
     [ 7.16590640e+07], 
     [ 8.28060960e+07], 
     [ 6.77042000e+07], 
     [ 7.07195360e+07], 
     [ 1.04754616e+08], 
     [ 7.27420400e+07], 
     [ 7.33461760e+07], 
     [ 6.34156040e+07], 
     [ 8.00440800e+07], 

这是我如何发送到数据帧:

predictions = pd.DataFrame() 
predictions['y_test'] = Y_test[0].tolist() 

这就是我得到:

  y_test 
0 [71010592.0] 
1 [91873632.0] 
2 [83556280.0] 
3 [71659064.0] 
4 [82806096.0] 
5 [67704200.0] 
6 [70719536.0] 
7 [104754616.0] 
8 [72742040.0] 
9 [73346176.0] 

如何删除括号([])?

回答

4

它看起来像一个三维阵列。您可以第一个元素传递到数据帧的构造函数:

pd.DataFrame(Y_test[0], columns=['y_test']) 
Out: 
     y_test 
0 71010592.0 
1 91873632.0 
2 83556280.0 
3 71659064.0 
4 82806096.0 
5 67704200.0 
6 70719536.0 
7 104754616.0 
8 72742040.0 
9 73346176.0 
10 63415604.0 
11 80044080.0 

从Divakar一个更好的选择是使用挤压:

pd.DataFrame(arr.squeeze(), columns=['y_test']) 
Out: 
     y_test 
0 71010592.0 
1 91873632.0 
2 83556280.0 
3 71659064.0 
4 82806096.0 
5 67704200.0 
6 70719536.0 
7 104754616.0 
8 72742040.0 
9 73346176.0 
10 63415604.0 
11 80044080.0 
+1

而不是被不屑于找出非单昏暗,我只想用'squeeze'。 – Divakar

+0

@Divakar是好多了。谢谢。 – ayhan

3

看来你有一个三维阵列,你可以尝试:

predictions['y_test'] = Y_test[0,:,0] 

predictions 

#  y_test 
#0 71010592.0 
#1 91873632.0 
#2 83556280.0 
#3 71659064.0 
#4 82806096.0 
#5 67704200.0 
#6 70719536.0 
#7 104754616.0 
#8 72742040.0 
#9 73346176.0 
#10 63415604.0 
#11 80044080.0 
1

几个方法,你可以做

选项1. Numpy索引

predictions['y_test'] = Y_test[0,:,0] 

选项2拼合使用列表理解

predictions['y_test'] = [x[0] for x in Y_test[0]] 

选项3 numpy的扁平化功能

predictions['y_test'] = Y_test.flatten() 
0
prediction = pd.DataFrame(Y_test.flatten(), columns=['y_test']) 
prediction.head() 

    y_test 
    0  1.0 
    1  1.0 
    2  1.0 
    3  1.0 
    4  1.0