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

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

替換數據框中的值

替換數據框中的值

不負相思意 2023-08-22 16:24:16
我有一個包含 3 列(A、B、C)的數據框。當列= 22 時,我想用列更新C列。我已經編寫了這樣的更新語句,但它正在更新不匹配的行。你能告訴我如何更新數據框中的數據嗎?ABNaNdf = pd.DataFrame(data=[[10,20,30],[11,21,31],[12,22,32]], columns=['A','B','C']) df.C = df[df.B==22].A
查看完整描述

4 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

讓我們嘗試一下mask


df.C.mask(df.B==22, df.A,inplace=True)

df

    A   B   C

0  10  20  30

1  11  21  31

2  12  22  12


查看完整回答
反對 回復 2023-08-22
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

這是執行此操作的幾種方法之一,是的,它需要額外的包,但如果您不知道np.where它非常方便。


import numpy as np


df['C'] = np.where(df['B']==22, df['A'], df['C'])


查看完整回答
反對 回復 2023-08-22
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

df.loc[df.B==22, 'C'] = df.loc[df.B==22, 'A']



查看完整回答
反對 回復 2023-08-22
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

另一種選擇是使用locand?reindex

df['C']?=?df.loc[df.B==22,'A'].reindex(df.index).fillna(df['C'])

理想情況下,您可以np.where在這種情況下使用,但這就是您的代碼不起作用的原因:

下面

df[df.B==22].A

返回:

2????12

您將看到返回值的索引是2,因此當您設置df.C使用括號表示法而不是.表示法)時,它會更新命名C為前一個結果的系列,該系列不包含其他索引(但僅包含2),因此其他指標設置為np.nan

此外,強烈建議不要chained indexing在賦值時使用它,因為它會導致此警告。


查看完整回答
反對 回復 2023-08-22
  • 4 回答
  • 0 關注
  • 1660 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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