這看起來很簡單。但我已經嘗試了幾個不同的東西,並且可能讀了十幾個似乎相關的StackOverflow問題。熊貓DataFrame在給定索引值的1列中替換值
我有密碼currnecies(比特幣等)的市場數據。訂單簿是給定貨幣的所有'詢問'和'出價'的清單。我想將數據存儲在Pandas DataFrame中。 (我並沒有堅持使用DFs,只是認爲它可能提供更容易的繪圖方式)。
所以現在的設置是一個DataFrame,其中Rate(價格)是索引,它是一個浮點數。在該價格下可用的硬幣數量在名爲Amt的列中。
當我在一個給定的價格獲得一個更新的金額我想簡單的替換值。所有可能的解決方案,我發現這個選項是最直觀的對我說:
df.Amt[df.Rate == rate] = new_amt
雖然我沒有從中得到任何錯誤,當我檢查,看看是否金額的變化,我覺得它有沒有。我認爲這是與DataFrame本身相關的複製/切片問題之一。
例子:
df.head()
Out[77]:
Rate Amt
0 0.018021 0.319033
1 0.018009 29.994000
2 0.017999 28.121000
3 0.018042 2.233781
4 0.018055 13.433394
df.Amt[df.Rate == 0.018021] = 20
df.head()
Out[79]:
Rate Amt
0 0.018021 0.319033
1 0.018009 29.994000
2 0.017999 28.121000
3 0.018042 2.233781
4 0.018055 13.433394
我缺少什麼?我過去曾與DF合作過更改整列,但通常不是一行。
你想,如果'df.Rate == 0.018021'或只是'df.Rate' – everestial007
你的問題是浮平等所有的值更改爲20。例如,顯示爲「1.02」的可能真的是「1.019」。一般來說,你並不想真正做到平等。我不知道在你的情況下的解決方案,但也許更像'x> 0.017&x <0.019' – JohnE
還有一個numpy函數'isclose()'可能會幫助你。 – JohnE