使用zip函数将列表按行或列插入dataframe
一、zip函数
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表对象。在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
a = [1, 2, 3, 4] b = [5, 6, 7, 8] c = ['a', 'b', 'c', 'd'] zip_ex1 = zip(a, b, c) print(list(zip_ex1))
返回的结果:
[(1, 5, 'a'), (2, 6, 'b'), (3, 7, 'c'), (4, 8, 'd')]
对打包的元组对象,利用 * 号操作符,可以将元组解压为列表。
print(list(zip(*zip_ex1)))
返回结果:
[(1, 2, 3, 4), (5, 6, 7, 8), ('a', 'b', 'c', 'd')]
二、zip函数在生成dataframe对象中的应用
当需要将多个列表生成一个dataframe对象时,如果每个列表生成一列可以简单使用pd.dataframe生成
a = [1, 2, 3, 4] b = [5, 6, 7, 8] c = ['a', 'b', 'c', 'd'] df = pd.DataFrame({'col_a': a, 'col_b': b, 'col_c': c}) print(df)
生成的dataframe对象
col_a col_b col_c 0 1 5 a 1 2 6 b 2 3 7 c 3 4 8 d
当每个列表的对应位置的元素作为一列,也就是说每个列表的第一个元素作为一列,第二个元素作为第二列,... 此时可以使用zip函数对列表进行打包然后再解包,就可以实现将列表中的元素按照所在位置重新组合,并生成dataframe
a = [1, 2, 3, 4] b = [5, 6, 7, 8] c = ['a', 'b', 'c', 'd'] lt = zip(*zip(a, b, c)) df = pd.DataFrame(lt, columns=['col_a', 'col_b', 'col_c', 'col_d']) print(df)
生成的dataframe结果:
col_a col_b col_c col_d
0 1 2 3 4
1 5 6 7 8
2 a b c d

浙公网安备 33010602011771号