我正试图从这三个列表中创建一个矩阵或数据框:
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
答案 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)
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
答案 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