首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas使用来自两个其他查找数据帧的值提取一个数据帧中的数据

Pandas使用来自两个其他查找数据帧的值提取一个数据帧中的数据
EN

Stack Overflow用户
提问于 2020-09-29 20:02:08
回答 1查看 31关注 0票数 1

我有一个Dataframe列,其中包含一些字符串,用于存储来自其他两个Dataframe的值,如下所示:

df的示例视图,其列col具有以下字符串。

代码语言:javascript
运行
复制
col
Highest Sales was for Mobile Scott
Lowest Returns was for Mobile Phone Steve
Low Returns was for Paul

我尝试从上面的Dataframe中提取值,以便创建一个新列,其中包含产品名称(从prod_df获得)和代表名称(从sales_rep_df获得)

prod_df数据帧中的数据

代码语言:javascript
运行
复制
prod_df
Laptop
Computer
Mobile
Mobile Phone

sales_rep_df数据帧中的数据

代码语言:javascript
运行
复制
sales_rep_df
Scott
Steve
Paul

预期输出

代码语言:javascript
运行
复制
col, prod, rep
Highest Sales was for Mobile Scott, Mobile
Lowest Returns was for Mobile Phone Steve, Mobile Phone, Steve
Low Returns was for Paul,,Paul
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-29 20:08:36

我相信你需要Series.str.extract来从列表中获取第一个参数值:

代码语言:javascript
运行
复制
pat1 = '|'.join(r"\b{}\b".format(x) for x in prod_df['col'])
pat2 = '|'.join(r"\b{}\b".format(x) for x in sales_rep_df['col'])
df['prod'] = df['col'].str.extract('('+ pat1 + ')', expand=False)
df['rep'] = df['col'].str.extract('('+ pat2 + ')', expand=False)

或对所有匹配项使用带有Series.str.joinSeries.str.findall

代码语言:javascript
运行
复制
df['prod'] = df['col'].str.findall(pat1).str.join(',')
df['rep'] = df['col'].str.findall(pat2).str.join(',')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64119204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档