首页 > 解决方案 > 从数据框中的字符串列表中提取元素(非破坏性)

问题描述

有人将此问题标记为其他帖子的副本,但没有完全理解该问题,并且可能缺少一个细节,这可能导致他们得出这个结论,所以我不得不再次发布它并进行一次小的编辑。

我有一个数据框,其中有一列如下所示:

Row 1: ['EC']
Row 2: ['EP', 'PY']
...
Row 13978: ['EC']

此列是通过对包含上述两个字母代码的字符串列使用正则表达式创建的,这些代码表示括号内模拟代码的连续运行中的故障条件:

df1['Error Code(s)']=df1['Error Code(s)'].apply(lambda x: re.findall('\((.*?)\)',x))

现在,对于分析中的一个步骤,我需要为每次运行访问错误代码列表中的第一个元素。我写:

df1['Error Code 1']=df1['Error Code(s)'].apply(lambda x: x[0])

我得到的错误:

IndexError: list index out of range

我已经将数据框写入 Excel 文件,阅读该列以确保我有一个字符串列表。当我创建一个虚拟字符串列表并尝试引用该列表中的 [0] 元素(不涉及数据框)时,它工作正常。但是在数据框列上加入 lambda 函数,它就会窒息。

我快速浏览了 Excel 文件中的整个列,没有一个列表看起来很奇怪,所以这不仅仅是因为糟糕的数据而窒息的好代码。

我也尝试使用 re.search() 而不是 re.findall(),然后在 lambda 函数上使用 .group[0]。我得到一个不同的错误。无论哪种方式,我都无法继续前进。我是 Python 的新手,所以我确信我缺少一些基本的东西。

标签: listdataframelambdare

解决方案


推荐阅读