关于迭代数据框和应用正则表达式的任何想法?
Any ideas on Iterating over dataframe and applying regex?
这可能是一个基本问题,但我是 pandas 的新手。
我有一个 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}
非常感谢
您可以尝试以下方法代替循环:
df['new_TEXT'] = df['TEXT'].apply(lambda x: [g[0].strip(), g[1].strip()] for g in re.findall('(.*?)\:\s*?\[(.*?)\]', x), na_action='ignore' )
这将使用您的结果数据创建一个新列。
这可能是一个基本问题,但我是 pandas 的新手。
我有一个 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}
非常感谢
您可以尝试以下方法代替循环:
df['new_TEXT'] = df['TEXT'].apply(lambda x: [g[0].strip(), g[1].strip()] for g in re.findall('(.*?)\:\s*?\[(.*?)\]', x), na_action='ignore' )
这将使用您的结果数据创建一个新列。