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

df1['Description']当df1['a']字符串等于df2['b']字符串时,Python 中创建新数据框列的最有效方法是什么?当条件满足时,一个单独的字符串df2['Description']将被分配给df1['Description']。df1并且df2是大小不等的大型数据框(约 1/2 百万行)。


df1:


a    b

Z0   1  

Z1   2

A7   3

df2:


b    Description

W2   asadsde  

Z0   evrverve

A7   eveveerv

我想:


df1

a    b   Description

Z0   1   evrverve  

Z1   2   jsbdbcje

A7   3   eveveerv


慕的地6264312
浏览 207回答 2
2回答

RISEBY

用 pandas.mergeimport pandas as pddf1 = pd.DataFrame([['Z0', 1],['Z1', 2], ['A7', 3]], columns=['a', 'b'])        a  b0  Z0  11  Z1  22  A7  3    df2 = pd.DataFrame([['W2', 'asadsde'], ['Z0', 'evrverve'], ['A7', 'eveveerv'], ['Z1', 'jsbdbcje']], columns=['a', 'Description'])        a Description0  W2     asadsde1  Z0    evrverve2  A7    eveveerv3  Z1    jsbdbcje    df3 = pd.merge(left=df1, right=df2, on='a', )        a  b Description0  Z0  1    evrverve1  Z1  2    jsbdbcje2  A7  3    eveveerv

慕桂英3389331

考虑到这些是您的数据帧:df1a    bZ0   1  Z1   2A7   3df2b   DescriptionW2  asadsdeZ0  evrverveA7  eveveervZ1  jsbdbcje使用map和实现所需输出的代码assign:df1.assign(description = df1['a'].map(dict(df2.values)))    a   b   description0   Z0  1   evrverve1   Z1  2   jsbdbcje2   A7  3   eveveerv在 df1 中,如果您只想要匹配的行,则使用dropna:df1.dropna(inplace=True)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python