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