gpt4 book ai didi

python - Pandas DataFrame 替换给定索引值的 1 列中的值

转载 作者:行者123 更新时间:2023-12-01 02:54:39 24 4
gpt4 key购买 nike

这看起来很简单。但我尝试了几种不同的方法,并阅读了大约十几个看起来相关的 StackOverflow 问题。

我有加密货币(比特币和其他货币)的市场数据。订单簿是给定货币的所有“要价”和“出价”的列表。我想将数据存储在 Pandas DataFrame 中。 (我并没有坚持使用 DF,只是认为它可能会在未来提供更容易的绘图。)

所以现在的设置是一个 DataFrame,其中费率(价格)是索引,并且它是一个 float 。该价格下可用的代币数量位于名为 Amt 的列中。

当我收到给定费率的金额更新时,我只想替换该值。在所有可能的解决方案中,我发现这个选项对我来说是最直观的:

df.Amt[df.Rate == rate] = new_amt

虽然我没有收到任何错误,但当我检查 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 来更改整列,但通常不只更改 1 行。

最佳答案

更正错误并纳入@JohnE 的评论

您使用 df.Amt 访问 pd.Series 对象,并使用 [df.Rate == 0.018021] 对其进行切片。当您想要将 bool 数组传递给 loc 并以这种方式分配时。

df.loc[np.isclose(df.Rate, 0.018021), 'Amt'] = 20

Rate Amt
0 0.018021 20.000000
1 0.018009 29.994000
2 0.017999 28.121000
3 0.018042 2.233781
4 0.018055 13.433394

关于python - Pandas DataFrame 替换给定索引值的 1 列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44339020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com