如何在Python中将两个列表列表组合成一个pandas DataFrame?

时间:2019-08-01 18:05:35

标签: python-3.x list dataframe

我有两个列表。一个有一个ID(某些子图),另一个有每个子图的出现频率(一些值)。每个列表是一个列表列表(具有不同的大小),我想创建一个数据框,每个子图的ID为一个柱状。之后,我想为id列表的每一行检查值列表中的相关值,并将此值保存在相关的dataframe列中。 更详细地说,我有以下两个列表:

*id_graph=[[1,2,3,4],[1,2],[1,2,3],[1,4]]
value_graph=[[11,22,33,44],[11,1],[122,9,1],[1,14]]*

我想要输出一个数据帧,例如:

     1    2       3     4
0   11.0    22.0    33.0    44.0
1   11.0    1.0 NaN NaN
2   122.0   9.0 1.0 NaN
3   1.0 NaN NaN 14.0

首先,我用所需的列名称创建了一个空的df 之后,我使用一个循环来定义df不同的行,并使用两个for循环和zip将值保存到dataframe

*import pandas as pd
a=[1,2,3,4]
a=list(a)
df=pd.DataFrame(columns=a)
id_graph=[[1,2,3,4],[1,2],[1,2,3],[1,4]]
value_graph=[[11,22,33,44],[11,1],[122,9,1],[1,14]]
for row in range(0,len(id_graph)):
    for a, b in zip(id_graph, value_graph):
        for i,j in zip(a,b):
            df.loc[row,i]=j
            print("row:",row,"id:",i,"value:",j)*

所以尽管我想要输出df之类的东西,

     1    2       3     4
0   11.0    22.0    33.0    44.0
1   11.0    1.0      NaN    NaN
2   122.0   9.0      1.0    NaN
3   1.0      NaN     NaN    14.0

我的输出是:

     1  2   3   4
0   1.0 9.0 1.0 14.0
1   1.0 9.0 1.0 14.0
2   1.0 9.0 1.0 14.0
3   1.0 9.0 1.0 14.0

1 个答案:

答案 0 :(得分:0)

这是一种方法,但是我可以想象有一些更平滑的东西。例如,我创建df时假设您知道您将拥有多少列。

import pandas as pd
a=[1,2,3,4]
a=list(a)
df=pd.DataFrame(columns=a)
id_graph=[[1,2,3,4],[1,2],[1,2,3],[1,4]]
value_graph=[[11,22,33,44],[11,1],[122,9,1],[1,14]]
df=pd.DataFrame(columns=[1,2,3,4])
i=0
for id_, value in zip(id_graph, value_graph):

    for n, val in zip(id_,value):
        df.loc[i,n]=val
    i+=1