【发布时间】:2021-05-08 23:50:17
【问题描述】:
我有这个 pandas DataFrame,它是对足球比赛中比赛的描述:
| play_id | type | Text |
|---|---|---|
| 1 | pass | Jon pass complete to Ben. |
| 2 | pass | Clock 14:52, Jon pass complete to Mitch. |
| 3 | rush | Frank rush. |
我的目标是使用脚本创建一个名为“passer”的新列,该脚本将遍历“text”列中的描述,并采用放在单词“pass”之前的名称。所以我首先使用这个:
df['passer'] = df['Text'].str.extract(r'(.*?)pass', expand=False).str.strip()
这给了我这个:
| play_id | type | Text | passer |
|---|---|---|---|
| 1 | pass | Jon pass complete to Ben. | Jon |
| 2 | pass | Clock 14:52, Jon pass complete to Mitch. | Clock 14:52, Jon |
| 3 | rush | Frank rush. | NaN |
它适用于第一个和第三个 playid,但不适用于第二个,因为它需要时间,有时可以包含在描述中。
我尝试在创建我的专栏时实现条件,代码检查描述中是否包含“时钟”,并使用正确的正则表达式,但这不起作用:
conditions = [
(np.where(df.Text.str.contains('Clock', case=False))),
(np.where(~df.Text.str.contains('Clock', case=False)))
]
choices = [
df['Text'].str.extract(r', (.*?) pass', expand=False).str.strip(),
df['Text'].str.extract('(.*?) pass', expand=False).str.strip()
]
df['passerNEW'] = np.select(conditions, choices, default='NaN')
df
我收到以下错误:
TypeError: condlist 中的无效条目 0: 应该是布尔型 ndarray
有没有办法让这个功能发挥作用?这似乎是一个很好的方法,因为在其他情况下,我可以检查三个不同的条件,以便知道要使用哪个正则表达式。
【问题讨论】:
标签: python regex pandas regex-lookarounds