我有两个列表,每个列表的长度约为160万个。每个项目都是空白的,或者在其中包含一个或多个字符串的嵌入列表。不幸的是,其中一个列表中缺少数据,这两个数据并不对应。我想将这些列表的内容写入平面数据帧,但如果数组的长度不同,则无法写入。
我已经尝试过一个for循环,当它检测到某个项目在一个列表中的长度与另一个列表中的长度不同时,会在其中一个列表中嵌入NAs,但是这种方法需要花费很长时间,因为它具有循环通过160万件物品。
是否有更快,更优雅的方式来做这个而不是通过for-loop方法。让整个过程大约需要6个小时。
编辑:这是我的意思的一个例子:
list_A = [[''],[''],[''],['a'],['a','b','c'],[''],['d']]
list_B = [[''],[''],[''],['a'],[''],[''],['']]
我想要的是将NAs放在list_B中的空列表中,以便list_B看起来像:
list_A = [[''],[''],[''],['a'],['a','b','c'],[''],['d']]
list_B = [[''],[''],[''],['a'],['NA','NA','NA'],[''],['NA']]
答案 0 :(得分:4)
在您的示例中,相应的项目相同,或者list_B
中的项目应替换为NA
列表,其长度与{list_A
中的项目长度相同1}}。这个生成器表达式应该足够快:
(a if a==b else len(a)*['NA'] for a,b in zip(list_A,list_B))