从3个列表中制作数据框/ numpy数组

时间:2019-04-15 14:43:03

标签: python pandas numpy

我正试图从这三个列表中创建一个矩阵或数据框:

x = ["col1","col2","col3","col4","col5","col6","col7","col8","col9","col10"]
y = ["a","b","c"]
z = [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]

我的目标是获得一个看起来像这样的数据框:

  col1 col2 col3 col4 col5 col6 col7 col8 col9 col10
a   1    2   3    4    5   6     7    8    9    10
b   11   12  13   14   15  16    17   18   19   20 
c   21   22  23   24   25  26    27   28   29   30

4 个答案:

答案 0 :(得分:5)

IIUC

pd.DataFrame(np.array(z).reshape(len(y),-1),index=y,columns=x)
Out[550]: 
   col1  col2  col3  col4  col5  col6  col7  col8  col9  col10
a     1     2     3     4     5     6     7     8     9     10
b    11    12    13    14    15    16    17    18    19     20
c    21    22    23    24    25    26    27    28    29     30

答案 1 :(得分:2)

您要去的地方:

df = pd.DataFrame(np.array(z).reshape(-1,len(x)))
df.columns = x
df.index = y

答案 2 :(得分:2)

zipiterpandas.DataFrame.from_dict

pd.DataFrame.from_dict(
    {k: dict(zip(x, i)) for k, i in zip(y, [iter(z)] * len(y))},
    orient='index'
)

   col1  col2  col3  col4  col5  col6  col7  col8  col9  col10
a     1     2     3     4     5     6     7     8     9     10
b    11    12    13    14    15    16    17    18    19     20
c    21    22    23    24    25    26    27    28    29     30

答案 3 :(得分:0)

这是一个可行的解决方案,但看起来并不时尚:

import pandas as pd

x = ["col1","col2","col3","col4","col5","col6","col7","col8","col9","col10"]
y = ["a","b","c"]
z = [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]


def listsToDf(x,y,z):
    df = pd.DataFrame()

    i = 0
    j= 0

    for elements in range(len(z)):
        i = i + 1
        if i < len(x):
            df.loc[j,i] = z[elements]

        else:
            df.loc[j,i] = z[elements]
            i = 0
            j = j + 1

     df.columns = x     
     df['index'] = y
     df.set_index('index',inplace = True)

     return df

 df = listsToDf(x,y,z)
 print(df)

返回:

       col1  col2  col3  col4  col5  col6  col7  col8  col9  col10
 index                                                             
 a       1.0   2.0   3.0   4.0   5.0   6.0   7.0   8.0   9.0   10.0
 b      11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0   20.0
 c      21.0  22.0  23.0  24.0  25.0  26.0  27.0  28.0  29.0   30.0