亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何比較列上的兩個數據框并替換為其他列值

如何比較列上的兩個數據框并替換為其他列值

精慕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 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號