Python 从3个列表生成dataframe/numpy数组

Python 从3个列表生成dataframe/numpy数组,python,pandas,numpy,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

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

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
给你:

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

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

IIUC


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

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)

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

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)
zip
iter
pandas.DataFrame.from_dict
zip
iter
pandas.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