首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫合并不是平等的

熊猫合并不是平等的
EN

Stack Overflow用户
提问于 2020-06-03 11:41:13
回答 1查看 55关注 0票数 0

df1:

代码语言:javascript
运行
复制
 Con1   Con2    Con3
 p      s       100
 q      t       200
 p      t       300
 q      s       400

df2:

代码语言:javascript
运行
复制
Ton1    Ton2    Ton3
p       s       150
p       t       110
p       s       108
q       t       409
q       s       410
q       t       406

产出应是:

代码语言:javascript
运行
复制
Con1    Con2    Con3    Ton1    Ton2    Ton3
p       s       100     p       s       108
q       t       200     Nan     Nan     Nan
p       t       300     Nan     Nan     Nan
q       s       400     Nan     Nan     Nan

合并应该基于逻辑,Ton3应该比Con3高6-10%。

逻辑:(Ton3 => (6%*Con3) +Con3) & (Ton3 =< (10%*Con3) +Con3)

代码语言:javascript
运行
复制
pd.merge(df1,df2,left_on=['Con1','Con2']+logic, right_on=['Ton1','Ton2']+logic, how='left')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-03 12:02:42

DataFrame产生

代码语言:javascript
运行
复制
df1 = pd.DataFrame({'Con1':['p','q','p','q'], 'Con2':['s','t','t','s'], 'Con3':[100,200,300,400]})
df2 = pd.DataFrame({'Ton1':['p','p','p','q','q','q'], 'Ton2':['s','t','s','t','s','t'], 'Ton3':[150,110,108,409,410,406]})

合并数据格式并应用给定的条件:

代码语言:javascript
运行
复制
df = pd.merge(df1,df2,how='left',left_on=['Con1','Con2'], right_on=['Ton1','Ton2'])
df = df[(df['Ton3']>=((0.06*df['Con3']) +df['Con3'])) & (df['Ton3']<=((0.1*df['Con3']) +df['Con3']))]
print(df)

我认为这应该是最后的输出格式。还请注意,对于特定对Con1Con2df1中,在df2中可能有多对Ton1ton2E 211

如果您也必须使用NaN获取行,请在运行上块之后运行以下代码块

代码语言:javascript
运行
复制
df = pd.merge(df1,df,how='left',left_on=['Con1','Con2','Con3'], right_on=['Con1','Con2','Con3'])
print(df)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62171977

复制
相关文章

相似问题

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