我有一个 Dataframe 列NVD,其中每行包含一个列表。我创建了几个新列,我想将列表中的第一个值添加到特定列,将列表中的第二个值添加到另一个列,等等。但是,我遇到了此错误IndexError: list index out of range
下面是我的起始DataFrame:
poam = pd.read_excel('NetApp-RET-NVD_V1.xlsx', header = 0)
new_poam = poam[["POAM ID ", 'NVD']]
# Split string into separate values and create list from values
new_poam['NVD'] = new_poam['NVD'].astype(str)
new_poam['NVD'] = [x[10:] for x in new_poam['NVD']]
new_poam['NVD'] = [x.replace("\/", ",") for x in new_poam['NVD']]
new_poam['NVD'] = [x.split(",") for x in new_poam['NVD']]
print(new_poam)
>>> Output
POAM ID NVD
0 V-1744 [AV:N, AC:L, PR:H, UI:N, S:U, C:N, I:N, A:H]
1 V-1747 [AV:N, AC:L, PR:H, UI:N, S:U, C:N, I:N, A:H]
2 V-1748 [AV:N, AC:L, PR:H, UI:N, S:U, C:N, I:N, A:H]
3 V-1749 [AV:N, AC:L, PR:H, UI:N, S:U, C:N, I:N, A:H]
4 V-1751 [AV:N, AC:L, PR:L, UI:N, S:U, C:N, I:N, A:H]
.. ... ...
200 V-2080 []
201 V-2082 []
202 V-2083 []
203 V-2084 []
204 V-2085 []
列NVD是我想要的值列表-所以现在我想添加所有新列,并将列表中的值添加到这些列中,下面是我实现这一点的方法:
new_poam.reindex(columns = new_poam.columns.tolist() + ['Attack Vector','Attack Complexity', 'Privileges Required', 'User Interaction', 'Impact Metrics: Confidentiality', 'Impact Metrics: Integrity', 'Impact Metrics: Availability', 'Remediation Level', 'List of Risk Reeduction'])
new_poam['Attack Vector'] = [x[0] for x in new_poam['NVD']]
print(new_poam)
>>> Output
POAM ID NVD Attack Vector
0 V-1744 [AV:N, AC:L, PR:H, UI:N, S:U, C:N, I:N, A:H] AV:N
1 V-1747 [AV:N, AC:L, PR:H, UI:N, S:U, C:N, I:N, A:H] AV:N
2 V-1748 [AV:N, AC:L, PR:H, UI:N, S:U, C:N, I:N, A:H] AV:N
3 V-1749 [AV:N, AC:L, PR:H, UI:N, S:U, C:N, I:N, A:H] AV:N
4 V-1751 [AV:N, AC:L, PR:L, UI:N, S:U, C:N, I:N, A:H] AV:N
.. ... ... ...
200 V-2080 []
201 V-2082 []
202 V-2083 []
203 V-2084 []
204 V-2085 []
您可以看到,列表中的第一个值已添加到Attack Vector列,但现在,当我尝试将列表中的第二个值添加到Attack Complexity列时,如下所示:
new_poam['Attack Complexity'] = [x[1] for x in new_poam['NVD']]
我得到了前面提到的错误IndexError: list index out of range
,我假设这是因为NVD列的一些行没有值,所以它是一个空列表,当我从列表中添加[0]
值时,它对空列表没有任何作用,但是当我添加其他值时,我认为这是导致错误的原因?如果是这样的话,如果它是一个空列表,我如何使它只向每个新列添加一个通用的“Null”值?
1条答案
按热度按时间hs1ihplo1#
在本例中,只需执行if语句
条件
if not
将检查您的列表是否为空