0

这可能是一个基本问题,但我是熊猫新手。

我有一个 csv 数据框,我想遍历每一行通过正则表达式提取特定列中的所有字符串信息。. (我使用正则表达式的原因是因为最终我想为该列创建一个单独的数据框)

我尝试遍历 for 循环,但我遇到了很多错误。到目前为止,看起来 for 循环将每个输入行读取为列表或系列而不是字符串(如果我错了,请纠正我)。我的主要功能是iteritems()findall()但到目前为止没有好的结果。我该如何解决这个问题?

我的数据框如下所示:

df =pd.read_csv('foobar.csv')
df[['column1','column2, 'TEXT']]

我的方法如下所示:

for Individual_row in df['TEXT'].iteritems():
   parsed = re.findall('(.*?)\:\s*?\[(.*?)\], Individual_row)
   res = {g[0].strip() : g[1].strip() for g in parsed}

提前谢谢了

4

1 回答 1

0

您可以尝试以下方法而不是循环:

df['new_TEXT'] = df['TEXT'].apply(lambda x: [g[0].strip(), g[1].strip()] for g in re.findall('(.*?)\:\s*?\[(.*?)\]', x), na_action='ignore' )

这将使用您的结果数据创建一个新列。

于 2021-04-06T01:27:22.663 回答