我正在嘗試使用 DataFrame 中已存在的值動(dòng)態(tài)更新 Pandas DataFrame 中的某些值。我知道我可以使用該loc方法進(jìn)行查找并將找到的值更新為靜態(tài)值。例如:import pandas as pdcustomers = pd.DataFrame({'id': [1, 2, 3], 'name': ['foo', 'bar', 'foo'], 'balance': [100, 200, -300]})customers.loc[(customers['name']=='foo') & (customers['id']==3), ['balance']] = 300print(customers)# {'id': [1, 2, 3], 'name': ['foo', 'bar', 'foo'], 'balance': [100, 200, 300]}但我正在嘗試使用 DataFrame 中已經(jīng)存在的值動(dòng)態(tài)更新值,例如:customers = pd.DataFrame({'id': [1, 2, 3], 'name': ['foo', 'bar', 'foo'], 'balance': [100, 200, -300]})customers.loc[(customers['name']=='foo') & (customers['id']==1), ['balance']] = #abs('balance')我希望這會(huì)將loc查詢中的所有值更新為正整數(shù)。當(dāng)然,這是一個(gè)只有一個(gè)匹配的簡單示例 :)有沒有辦法像這樣動(dòng)態(tài)訪問/更新 Pandas DataFrame 中的值?謝謝!
1 回答

楊魅力
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
pandas是index敏感的,因此當(dāng)您分配隱藏鍵的值時(shí)index,它將匹配index,因此您只需應(yīng)用條件一次。
customers.loc[(customers['name']=='foo') & (customers['id']==1), ['balance']] =customers.balance.abs()
customers
Out[112]:
balance id name
0 100 1 foo
1 200 2 bar
2 300 3 foo
添加回答
舉報(bào)
0/150
提交
取消