Python 列表理解:如果项目不存在,则插入一个值?

问题描述 投票:0回答:1

我有两个列表,我想将它们作为两个单独的数组合并到一个数据帧中。问题是,我正在使用的数据不完整并且缺少信息

数据

创建 3 个列表

Name = [item[0] for item in Data if item]
Age = [item[1] for item in Data if item]
Fruit = [item[2] for item in Data if item]

产生:

Name = ['John', 'Eric', 'Dave', 'Mike', 'Charlotte']
Age = ['32', '25', '31']
Fruit = ['Apple', 'Banana', 'Pear']

但是,当尝试

pd.DataFrame
时,这显然会导致错误,因为列表的长度不同。

有没有一种方法可以提高我的列表理解能力,插入空白或默认值以确保我的列表保持相同的长度,从而产生类似的结果:

Name = ['John', 'Eric', 'Dave', 'Mike', 'Charlotte']
Age = ['32', '', '25', '31', '']
Fruit = ['', 'Apple', 'Banana', 'Pear', '']
python list list-comprehension
1个回答
0
投票

我很难理解你的

Data
是如何表示的。因为,如果第二行(
Data[1]
)在索引
1
处没有任何内容,那么你的代码应该产生

Age = ["Apple", 25, 31]

然后是一个 IndexError,因为最后一行的第二列上没有任何内容。这意味着存在某种占位符来指示空槽。因此,您可以检查该值的等价性并相应地分配值。

鉴于占位符是

None
,您可以执行以下操作...

Name = [ (i[2] if i[2] is not None else "") for i in Data ]

万一,每个子数组预处理的长度不同,即没有任何值(我仍然很困惑你如何在最后一行没有得到 IndexError

Fruit
理解),可以填None然后使用上面的方法

© www.soinside.com 2019 - 2024. All rights reserved.