2 回答

TA貢獻1789條經(jīng)驗 獲得超8個贊
您可以使用 str.extract 使用模式提取所有匹配項,
df = df.assign(**df['Headline'].str.extract('(?P<Headline_Player>.*)\s\((?P<Location>.*)\)\s(?P<Status>.*)'))
df = df.dropna()
df['Injury/Rest'] = np.where(df['Location'].eq('rest'), 'Rest', 'Injury')
Player Name Headline Headline_Player Location Status Injury/Rest
1 LeBron James LeBron James (groin) probable for Thursday LeBron James groin probable for Thursday Injury
3 LeBron James Kyrie Irving (groin) plans to play on Tuesday Kyrie Irving groin plans to play on Tuesday Injury
4 LeBron James LeBron James (rest) questionable Tuesday LeBron James rest questionable Tuesday Rest
5 LeBron James LeBron James (leg) will start on Saturday LeBron James leg will start on Saturday Injury
編輯:要處理像 Unfortunately to hear that LeBron James (groin) probably for Thursday) 這樣的邊緣情況,您可以使用正則表達式提取兩個由空格分隔的字符串。如果名稱是兩個字符串的形式,這將嚴格起作用。
df.assign(**df['Headline'].str.extract('(?P<Headline_Player>\w+\s\w+)\s\((?P<Location>.*)\)\s(?P<Status>.*)'))

TA貢獻1878條經(jīng)驗 獲得超4個贊
這個怎么樣?
df_new = df[df.Headline.str.contains('\(')].copy()
df_new['Headline_Player'] = df_new.Headline.apply(lambda x: x.split('(')[0])
df_new['Location']=df.Headline.str.extract('\((.*)\)')[0]
df_new['Injury/Rest'] = np.where(df_new['Location'].eq('rest'), 'Rest', 'Injury')
df_new['Status'] = df_new.Headline.apply(lambda x: x.split(')')[1])
df_new
輸出
Player Name Headline Headline_Player Location Injury/Rest Status
LeBron James LeBron James (groin) probable for Thursday LeBron James groin Injury probable for Thursday
LeBron James Kyrie Irving (groin) plans to play on Tuesday Kyrie Irving groin Injury plans to play on Tuesday
LeBron James LeBron James (rest) questionable Tuesday LeBron James rest Rest questionable Tuesday
LeBron James LeBron James (leg) will start on Saturday LeBron James leg Injury will start on Saturday
LeBron James Kevin Love (hip) is questionable Kevin Love hip Injury is questionable
Ryan Anderson Anderson (flu) returns against Cavs on Sunday Anderson flu Injury returns against Cavs on Sunday
Ryan Anderson Anderson (rest) not playing Anderson rest Rest not playing
添加回答
舉報