在 iteritem 中的每个项目的 Pandas 数据帧上应用正则表达式并仅返回第一部分

E.尔凡

我有一个 txt 文件,里面有州名和大学名。我已经使用 pandas.read_table() 将其读入数据帧。然后我通过 iterrows() 遍历它,并且在每个项目上我只想得到州和大学。可以通过 [edit] 后缀检测状态。然后在其他行中跟随大学,直到出现下一个州。这意味着另一个名称后跟“[edit]”。数据框的视图如下所示:

在此处输入图片说明

如图所示,第 0 行中的阿拉巴马州是一个州。第 1 行到第 8 行的大学属于阿拉巴马州,直到第 9 行出现,这是另一个州。第 10 行属于第 9 行的阿拉斯加州。整个数据框具有这种结构。我正在尝试清理它并返回另一个具有此结构的数据框:一列包含州名和大学名,但没有 [] 和 () 之后的部分。然后它看起来像下面这样:

阿拉巴马州

赤褐色

佛罗伦萨

杰克逊维尔

一些记录带有“.”。或名称中的空格。我已经编写了以下正则表达式来获取它们,但结果也给了我“编辑”、“奥本大学”等。换句话说,它返回匹配的任何内容,而不仅仅是第一部分。

代码如下:我已将 txt 文件读入名为 df_university_town 的数据帧中。然后我应用正则表达式如下:

import re
pattern = re.compile(r'([a-zA-Z]+[\.\s]?[a-zA-Z]+)(\w?)')
for key, item in df_university_town.iteritems():
    matches = pattern.finditer(str(item))
    for match in matches:
        print(match.group(1))

这是我得到的结果:

在此处输入图片说明

如您所见,最终结果中的“编辑”和“奥本大学”是额外的。我使用了不同的方法并尝试了 match() ,但这也没有帮助。基本上,当我到达“[”或“(”时,搜索不应继续。我不知道我还需要做什么。我感谢任何帮助或建议。

非常感谢您的帮助和您投入的时间。

阿洛兹

如果您需要抓取这些字符之前的所有内容,请使用.str.split. 正则表达式允许在(or之前使用可选的空白字符,[因此您以后不需要删除它。

df.RegStatName.str.split('(\s?\(|\s?\[)').str[0]

0      Alabama
1       Auburn
2     Florence
3       Alaska
4    Fairbanks
5      Arizona
6      Nothing
7         This
Name: RegStatName, dtype: object

样本数据: df

                                     RegStatName
0                                  Alabama[edit]
1                  Auburn (Auburn University)[1]
2         Florence (University of NOrth Alabama)
3                                   Alaska[edit]
4  Fairbanks (University of Alaska Fairbanks)[2]
5                                  Arizona[edit]
6                                        Nothing
7                               This [something]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我无法在python中匹配我的正则表达式的最后一部分?

如何获取与SQL Server中的正则表达式匹配的字符串的一部分

通过bash正则表达式模式作为awk中较大正则表达式模式的一部分

Python正则表达式:如果字母不是列表中单词的一部分,则替换字母

TS / JS从正则表达式匹配中拆分字符串的一部分

在replaceAll调用中修改正则表达式的一部分

正则表达式仅返回比赛的第一部分

python正则表达式中字符类的一部分除外

正则表达式中第二个捕获组的一部分

使用正则表达式将文本的一部分提取到表中

正则表达式以匹配具有特定值一部分的所有项目集

正则表达式-仅在字符串的一部分中更改逗号

停止正则表达式匹配单词中单词的一部分

在python中通过正则表达式提取字符串的一部分

正则表达式,用于标识javascript中URL的一部分

使用正则表达式在js / jquery中获取字符串的一部分

如何在Ruby中将正则表达式的一部分捕获到变量中?

Java中的正则表达式获取字符串的一部分

如何使用正则表达式在Java中处理字符串的一部分

正则表达式在Visual Studio中替换src属性的一部分

仅替换c#中匹配的正则表达式的一部分

如何在正则表达式中否定类的一部分?

正则表达式,从图像的src属性中删除第一部分

正则表达式匹配模式但只替换 R 中匹配的一部分

如何使用正则表达式从 URL 中获取最后一部分?

在Python中仅替换正则表达式字符串的一部分的方法

正则表达式:从一行的一部分中删除空格

如何在我的正则表达式中不包含文本字符串的第一部分?

如何仅通过正则表达式检索原始数据的第一部分中的信息?