这看起来很简单。但我已经尝试了几个不同的东西,并且可能读了十几个似乎相关的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