Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
81 views
in Technique[技术] by (71.8m points)

python - How to extract a word before another word in pandas

I've got this pandas DataFrame, which is a description of plays during a football match:

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.
question from:https://stackoverflow.com/questions/66049688/how-to-extract-a-word-before-another-word-in-pandas

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
  • Use pandas.Series.str.extract with a positive lookahead conditional.
  • flags=re.IGNORECASE is used to ignore the case of 'pass'
    • df.Text.str.lower().str.extract('(w+(?=s+pass))') can be used instead of importing re for the flag.
import pandas as pd
import re

# test dataframe
data = {'play_id': ['1', '2', '3'], 'type': ['pass', 'pass', 'rush'], 'Text': ['Jon PASS complete to Ben.', 'Clock 14:52, Jon pass complete to Mitch.', 'Frank rush.']}
df = pd.DataFrame(data)

# display(df)
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.

# extract
df['passer'] = df.Text.str.extract('(w+(?=s+pass))', flags=re.IGNORECASE)

# display(df)
play_id type                                     Text passer
      1 pass                Jon PASS complete to Ben.    Jon
      2 pass Clock 14:52, Jon pass complete to Mitch.    Jon
      3 rush                              Frank rush.    NaN

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...