有人可以向我解釋這種行為嗎?這是我的資料框:
df = pd.DataFrame(
{
'key1' : ['f1', 'f1', 'f2', 'f2', 'f3'],
'key2' : ['fm1', 'fm2', 'fm1', 'fm2', 'fm1'],
'k' : np.random.rand(5),
'c' : [100, 200, 100, 150, 400],
})
df.set_index(["key1","key2"],inplace=True)
當我嘗試更改值時:
df.loc["f1","fm1"].loc["k"]=-999
沒發生什么事。并且df.loc["f1","fm1"].loc["k"]仍然給出舊值我想知道我做錯了什么,我應該如何實作這一目標?
uj5u.com熱心網友回復:
使用一個元組,只有一個loc:
>>> df.loc[("f1", "fm1"), "k"] = -999
>>> df
k c
key1 key2
f1 fm1 -999.000000 100
fm2 0.082072 200
f2 fm1 0.119572 100
fm2 0.752586 150
f3 fm1 0.947604 400
>>>
您的代碼不起作用的原因是因為df.loc["f1", "fm1"]參考了一個與原始物件沒有干擾的物件df,它回傳一個全新的資料幀并替換該k值,但它也不會替換它df。
了解更多關于它在這里的大熊貓檔案上。
uj5u.com熱心網友回復:
因為您正在嘗試更改資料幀中切片副本上的值。在這里閱讀:為什么使用鏈式索引時賦值失敗?
可以使用以下代碼來實作所需的結果:
df["k"].loc["f1", "fm1"] = -999
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/334599.html
