python - 在两个 Pandas Dataframe 列之间查找匹配关键字之前和之后的单词并在新列中返回
问题描述
我试图在两个数据框列之间的字符串之前和之后找到前三个单词,并在名为“Words Before”和“Words after”的两个新列中返回。
我的数据框
Keyword Description
pet cat car dog pet day bye are
我想要的输出
Keyword Description Words Before Words After
pet cat car dog pet day bye are cat car dog day bye are
我试过的我来的壁橱能够手动搜索一个单词并返回之前的单词,但这不是我需要的。
df['Words Before'], df['Words After'] = df['Description'].str.extract(r"(\w+Keyword)"), df['Description'].str.extract(r"(\w+Keyword)")
任何帮助将不胜感激。
编辑:测试数据框
data = {'keyword': ['pet'], 'description': ["cat car dog pet day bye are"]}
df = pd.DataFrame(data)
解决方案
使用断言前瞻,即 k(?=l); k 仅当后跟 l 并且还断言肯定后向,即 (?<=e)f; f 只有当 e 出现在它之前。代码如下
df=df.assign(WordsBefore=df.Description.str.extract('(^\D+(?=pet))'),
WordsAfter=df.Description.str.extract('((?<=pet)\D+)'))
print(df)
如果要直接从数据框中调用关键字,请使用 f 字符串;下面的代码
s=df.Keyword
df=df.assign(WordsBefore=df.Description.str.extract("(^\D+(?=f'{s}'))"),
WordsAfter=df.Description.str.extract("((?<=f'{s}')\D+)"))
print(df)
Keyword Description WordsBefore WordsAfter
0 pet cat car dog pet day bye are cat car dog day bye are
推荐阅读
- sql - 在 Oracle Apex 中显示服务器端条件取决于页面项值的按钮?
- c - 如何正确地将 C 结构写入磁盘上的文件,以便可以在其上使用 mmap?
- tree - 红黑树简单应用
- python - 多任务库文档
- python - 爬取网站时收集不同的属性
- asp.net-core - 找不到网页.net core 2.1
- python - scaler.inverse_transform() 在将 LSTM NN 预测转换为实际数据值时出错
- angular - 如何以角度模拟 rxjs/Websocket 以进行单元测试
- linux - 如何在bash中覆盖以前的输出
- xml - 是否可以使用 xmlstarlet 将计算属性(即非常量)插入 XML 文件?