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

如何比较列上的两个数据框并替换为其他列值

如何比较列上的两个数据框并替换为其他列值

精慕HU 2021-05-30 17:12:18
我有两个数据框,分别是 df1 和 df2id      first       last  size  A 1978-01-01 1979-01-01     2  B 2000-01-01 2000-01-01     1  C 1998-01-01 2000-01-01     3  D 1998-01-01 1998-01-01     1  E 1999-01-01 2000-01-01     2  id  token         A     ZA.00   B     As.11  C     SD.34输出id          first       last        size  ZA.00     1978-01-01 1979-01-01     2  As.11     2000-01-01 2000-01-01     1  SD.34     1998-01-01 2000-01-01     3  D         1998-01-01 1998-01-01     1  E         1999-01-01 2000-01-01     2如果 df1 id 存在于 df2 中,则令牌值将设置 df1 id 值。我怎么能做到这一点。
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

使用map和fillna:


df1['id'] = df1['id'].map(df2.set_index('id')['token']).fillna(df1['id'])

df1

输出:


      id       first        last  size

0  ZA.00  1978-01-01  1979-01-01     2

1  As.11  2000-01-01  2000-01-01     1

2  SD.34  1998-01-01  2000-01-01     3

3      D  1998-01-01  1998-01-01     1

4      E  1999-01-01  2000-01-01     2

您可以使用map系列作为参数。


查看完整回答
反对 回复 2021-06-01
?
有只小跳蛙

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

使用Merge和combine_first:


df = df1.merge(df2,how='outer')

df['id'] = df['token'].combine_first(df['id'] )

df.drop('token',inplace=True,axis=1)

另一种方法是replace与字典一起使用df2.values,这里 df1 数据框更改。:


df1.id.replace(dict(df2.values),inplace=True)

        id  first   last    size

    0   ZA.00   1978-01-01  1979-01-01  2

    1   As.11   2000-01-01  2000-01-01  1

    2   SD.34   1998-01-01  2000-01-01  3

    3   D   1998-01-01  1998-01-01  1

    4   E   1999-01-01  2000-01-01  2


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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