猿问

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

我有两个数据框,分别是 df1 和 df2


id      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 值。我怎么能做到这一点。


精慕HU
浏览 155回答 3
3回答

慕婉清6462132

使用map和fillna:df1['id'] = df1['id'].map(df2.set_index('id')['token']).fillna(df1['id'])df1输出:      id       first        last  size0  ZA.00  1978-01-01  1979-01-01     21  As.11  2000-01-01  2000-01-01     12  SD.34  1998-01-01  2000-01-01     33      D  1998-01-01  1998-01-01     14      E  1999-01-01  2000-01-01     2您可以使用map系列作为参数。

有只小跳蛙

使用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
随时随地看视频慕课网APP

相关分类

Python
我要回答