使用熊猫在关键短语后提取字符串的特定部分?

Posted

技术标签:

【中文标题】使用熊猫在关键短语后提取字符串的特定部分?【英文标题】:Extract a certain part of a string after a key phrase using pandas? 【发布时间】:2014-03-23 17:43:12 【问题描述】:

我有一个 NFL 数据集,其中有一个“描述”列,其中包含有关比赛的详细信息。每个成功的传球和跑球都有一个结构如下的字符串:

“(12:25)(No Huddle Shotgun)P.Manning 向左短传球给 W.Welker 在 DEN 34 处将 ob 推了 10 码(C.Graham)。”

如何定位/提取字符串中“for”后的数字,并将其放入新列中?

【问题讨论】:

【参考方案1】:

可以使用Seriesstr.extract字符串方法:

In [11]: df = pd.DataFrame([["(12:25) (No Huddle Shotgun) P.Manning pass short left to W.Welker pushed ob at DEN 34 for 10 yards (C.Graham)."]])

In [12]: df
Out[12]:
                                                   0
0  (12:25) (No Huddle Shotgun) P.Manning pass sho...

这将“提取”组的内容(括号内):

In [13]: df[0].str.extract("for (\d+)")
Out[13]:
0    10
Name: 0, dtype: object

In [14]: df[0].str.extract("for (\d+) yards")
Out[14]:
0    10
Name: 0, dtype: object

您需要转换为 int,例如使用astype(int)

【讨论】:

哇哦!作品。非常感谢。 好的。所以,我得到:AttributeError:'StringMethods'对象没有属性'extract'。 (对不起,我是新手。) @mlaugh4 您使用的是哪个版本的 pandas(这是 0.13 中的新功能)建议更新到最新版本 (0.13.1) :) @mlaugh4 检查pd.version.version 美丽。再次感谢安迪。【参考方案2】:

这将获取数字 10 并将其放入名为码的变量中。

x = "(12:25) (No Huddle Shotgun) P.Manning 向左短传球给 W.Welker 在 DEN 34 处将 ob 推了 10 码 (C.Graham)。"

码 = (x.split("for ")[-1]).split("码")[0]

【讨论】:

以上是关于使用熊猫在关键短语后提取字符串的特定部分?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式从熊猫数据框中的一行中的字符串中提取所有特定值?

熊猫从数据框中的一列中提取部分字符串并将其存储在一个新列中

如何从字符串中提取熊猫索引的属性

如何在熊猫数据框单元格中提取部分字符串并在其中创建一个包含该字符串的新列

如何使用 regex.match 在 c# 中提取字符串的特定部分? [复制]

从 Power BI 桌面/查询中的单元格中提取短语