pandas 如何将多个列表压缩成一个列表并保持列表大小不变?

kqhtkvqz  于 2023-03-11  发布在  其他
关注(0)|答案(5)|浏览(134)

我正在尝试合并多个列表,输出一个所有值的列表,并保留零。索引和值需要保存在同一个索引位置。
输入:

list1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0]
list2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12]
list3 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
list4 = [0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0]
list5 = [0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0]
list6 = [0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0]
list7 = [0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0]
list8 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
list9 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
list10 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
list11 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
list12 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

这就是我想要的输出..
输出:

results = [1,0,0,4,5,6,7,0,0,0,11,12]
vdzxcuhz

vdzxcuhz1#

并行循环所有列表并对相应元素求和。

results = list(map(sum, zip(list1, list2, list3, list4, list5, list6, list7, list8, list9, list10, list11, list12)))
cqoc49vn

cqoc49vn2#

# coding=utf-8
import pandas as pd

data = [list1, list2, list3, list4, list5, list6, 
        list7, list8, list9, list10,list11, list12]

sum_l = pd.DataFrame(data).sum().tolist()

# [1, 0, 0, 4, 5, 6, 7, 0, 0, 0, 11, 12]
myss37ts

myss37ts3#

如果你想使用列表理解,并且所有的列表都有相同的长度。

results = []
for i in range(len(list1)):
    results.append(list1[i]+list2[i]+list3[i]+list4[i]+list5[i]+list6[i]+list7[i]+list8[i]+list9[i]+list10[i]+list11[i]+list12[i])

这会让工作完成,即使它是丑陋的。

rn0zuynd

rn0zuynd4#

list_of_lists = [list1, list2, ...]

[sum(lst) for lst in zip(*list_of_lists)]

编辑与@Barmar的回答基本相同--我在帖子中没有看到他的回答

ntjbwcob

ntjbwcob5#

result = [*map(sum, zip(*[(eval(f'list{i}')) for i in range(1, 13)]))]

相关问题