为了账号安全,请及时绑定邮箱和手机立即绑定

通过比较两个不相等的数据帧的字符串来创建新的数据帧列

通过比较两个不相等的数据帧的字符串来创建新的数据帧列

慕的地6264312 2021-06-07 17:46:10
df1['Description']当df1['a']字符串等于df2['b']字符串时,Python 中创建新数据框列的最有效方法是什么?当条件满足时,一个单独的字符串df2['Description']将被分配给df1['Description']。df1并且df2是大小不等的大型数据框(约 1/2 百万行)。df1:a    bZ0   1  Z1   2A7   3df2:b    DescriptionW2   asadsde  Z0   evrverveA7   eveveerv我想:df1a    b   DescriptionZ0   1   evrverve  Z1   2   jsbdbcjeA7   3   eveveerv
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

用 pandas.merge

import pandas as pd


df1 = pd.DataFrame([['Z0', 1],['Z1', 2], ['A7', 3]], columns=['a', 'b'])

    

    a  b

0  Z0  1

1  Z1  2

2  A7  3

    

df2 = pd.DataFrame([['W2', 'asadsde'], ['Z0', 'evrverve'], ['A7', 'eveveerv'], ['Z1', 'jsbdbcje']], columns=['a', 'Description'])

    

    a Description

0  W2     asadsde

1  Z0    evrverve

2  A7    eveveerv

3  Z1    jsbdbcje

    

df3 = pd.merge(left=df1, right=df2, on='a', )

    

    a  b Description

0  Z0  1    evrverve

1  Z1  2    jsbdbcje

2  A7  3    eveveerv


查看完整回答
反对 回复 2021-06-09
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

考虑到这些是您的数据帧:


df1

a    b

Z0   1  

Z1   2

A7   3


df2

b   Description

W2  asadsde

Z0  evrverve

A7  eveveerv

Z1  jsbdbcje

使用map和实现所需输出的代码assign:


df1.assign(description = df1['a'].map(dict(df2.values)))



    a   b   description

0   Z0  1   evrverve

1   Z1  2   jsbdbcje

2   A7  3   eveveerv

在 df1 中,如果您只想要匹配的行,则使用dropna:


df1.dropna(inplace=True)


查看完整回答
反对 回复 2021-06-09
  • 2 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号