如何从元组列表和列表中分离出数据帧的单独列

时间:2018-05-05 21:29:58

标签: python pandas dataframe

我有以下列表:

l1 = [(1,2),(3,4),(5,6)]
l2 = [7,8,9]

我希望输出为df

df =

       c1 c2 c3

   0   1   2   7
   1   3   4   8
   2   5   6   9

到目前为止,我可以将元组分开为

df = pd.DataFrame(l1) 

给了我:

   c1  c2
0  1  2
1  3  4
2  5  6

我想为上面提到的多个不同形式的列表做。

2 个答案:

答案 0 :(得分:4)

2-list表格:

pd.DataFrame([*x, y] for x, y in  zip(l1, l2))

   0  1  2
0  1  2  7
1  3  4  8
2  5  6  9

多列表形式:

from collections import Sequence

lists = [l1, l2, ...]
pd.DataFrame([
    [
        k for j in i for k in (j 
        if isinstance(j, Sequence) else [j]
    )] 
    for i in zip(*lists)
])

   0  1  2
0  1  2  7
1  3  4  8
2  5  6  9

无论l_i是元组列表还是整数列表,这都适用于任何情况。

答案 1 :(得分:2)

您也可以使用pd.concat,并连接pd.DataFrame(l1)pd.Dataframe(l2)生成的数据框:

df = pd.concat([pd.DataFrame(l1), pd.DataFrame(l2)], axis=1)

>>> df
   0  1  0
0  1  2  7
1  3  4  8
2  5  6  9