Я пытаюсь извлечь значения в столбце с текстовыми данными, как показано ниже:
create date:1953/01/01 | first author:REAGAN RL
Как мне извлечь имя автора из столбцов и сохранить в новом столбце. Я пробовал следующие способы:
df.str.extract("first author:(.*?)")
а также
authorname=df['EntrezUID'].apply(lambda x:x.split("first author:"))
. Второй сработал.
Как я могу использовать выражения regualr для достижения аналогичной цели
Ты можешь сделать:
## sample data
df = pd.DataFrame({'dd':['create date:1953/01/01 | first author:REAGAN RL','create date:1953/01/01 | first author:MEGAN RL']})
## output
df['names'] = df['dd'].str.extract(r'author\:(.*)')
print(df)
dd names
0 create date:1953/01/01 | first author:REAGAN RL REAGAN RL
1 create date:1953/01/01 | first author:MEGAN RL MEGAN RL
Что, если я хочу извлечь созданную дату? df ['dd']. str.extract (r'created date \: (. *) ')
@HarshaVardhan df['dd'].str.extract(r'create date:(\S+)', expand=False)
Спасибо. Этот тоже у меня сработал. df ['EntrezUID']. str.extract (r'create date \: (. *) \ | '). @coldspeed, есть ли какой-нибудь блог, в котором рассказывается о str.extract. Какая польза от expand = False?
@HarshaVardhan Официальная документация - хорошее место для начала: pandas.pydata.org/pandas-docs/stable/generated/…
Это сработало для меня. Ценю вашу помощь. Не могли бы вы дать мне ссылку на регулярные выражения. Что именно делает \: (. *)?