2016-08-11 48 views
0

我需要在列表中列出的数组列表的转换帮助成数据帧Coverting名单列表的数组列表到数据帧

我的数据是这样的

[array([[ 0.01568627, 0.01568627, 0.01176471], 
    [ 0.01176471, 0.01176471, 0.01176471], 
    [ 0.01176471, 0.01176471, 0.01176471], 
    ..., 
    [ 0.05098039, 0.05098039, 0.05098039], 
    [ 0.04705882, 0.05098039, 0.04705882], 
    [ 0.05098039, 0.05098039, 0.04705882]]), array([[ 0.01568627, 0.01568627, 0.01568627], 
    [ 0.01176471, 0.01568627, 0.01176471], 
    [ 0.01176471, 0.01568627, 0.01568627], 
    ..., 
    [ 0.05490196, 0.05098039, 0.05098039], 
    [ 0.05098039, 0.05490196, 0.05098039], 
    [ 0.05098039, 0.05098039, 0.05098039]]) 

当我试图DF = pd.DataFrame(LST),没有工作

我试图读取图像,并把它变成一个列表

我的代码是这样

for filename in files: 
img = misc.imread(filename) 
img = img[::2, ::2] 
X = (img/255.0).reshape(-1, 3) 
lst.append(X) 

我得到上面的数据,当我提前打印LST

谢谢!

+0

期望输出的形状是什么? – ayhan

+0

其实我读的图像,并将它们存储为list.My码ID像这样的文件名中的文件: IMG = misc.imread(文件名) IMG = IMG [:: 2:2] X =(img/255.0).reshape(-1,3) lst.append(X) –

+0

确定但是应该如何返回DataFrame?在这个列表中你有2个数组,这些数组是二维的。一个DataFrame也是二维的,所以对于二维数组,你需要做一些整形(使用multiindex,concat等)。 – ayhan

回答

0

考虑与列表理解中的pd.concat()连接。请注意,您将失去两位小数的精确度,以适应float64 dtype。下面将输出一个3列数据帧:

from numpy import array 
import pandas as pd 

lst = [array([[ 0.01568627, 0.01568627, 0.01176471], 
       [ 0.01176471, 0.01176471, 0.01176471], 
       [ 0.01176471, 0.01176471, 0.01176471],    
       [ 0.05098039, 0.05098039, 0.05098039], 
       [ 0.04705882, 0.05098039, 0.04705882], 
       [ 0.05098039, 0.05098039, 0.04705882]]), 
     array([[ 0.01568627, 0.01568627, 0.01568627], 
       [ 0.01176471, 0.01568627, 0.01176471], 
       [ 0.01176471, 0.01568627, 0.01568627],    
       [ 0.05490196, 0.05098039, 0.05098039], 
       [ 0.05098039, 0.05490196, 0.05098039], 
       [ 0.05098039, 0.05098039, 0.05098039]])] 


df = pd.concat([pd.DataFrame(i) for i in lst]).reset_index(drop=True) 

print(df) 
#   0   1   2 
# 0 0.015686 0.015686 0.011765 
# 1 0.011765 0.011765 0.011765 
# 2 0.011765 0.011765 0.011765 
# 3 0.050980 0.050980 0.050980 
# 4 0.047059 0.050980 0.047059 
# 5 0.050980 0.050980 0.047059 
# 6 0.015686 0.015686 0.015686 
# 7 0.011765 0.015686 0.011765 
# 8 0.011765 0.015686 0.015686 
# 9 0.054902 0.050980 0.050980 
# 10 0.050980 0.054902 0.050980 
# 11 0.050980 0.050980 0.050980 
+0

它的工作。谢谢! –