これは単純なもののようです。しかし、私はいくつかの異なることを試して、多分関連しているようなStackOverflow質問を読んだ。Pandas DataFrameは、インデックス値を指定して1列の値を置き換えます。
暗号化処理の市場データ(BitCoinなど)があります。注文書は、特定の通貨のすべての「尋ねる」および「入札」のリストです。私はPandas DataFrameにデータを保存したいと思っています。 (私はDFの使用についていないので、道路を簡単にプロットできると思っていただけです)
これで、DataFrameはレート(価格)がインデックスでフロートです。その価格で利用できるコインの数量は、Amtという列にあります。
私が与えられたレートで金額を更新すると、その値を置き換えるだけです。
df.Amt[df.Rate == rate] = new_amt
私はAMTの変更は、私はそれがない持っていることを見つけるかどうかをチェックしたときに、私は、ここからすべてのエラーを得ることはありませんが:私はこのオプションは私にとって最も直感的であることが判明し、すべての可能な解決策の。私は、これがコピー/スライスの問題とDataFrame自体の作業の1つであると想定しています。
例:
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行しか変更しませんでした。
は 'df.Rateの== 0.018021'または単に' df.Rate' – everestial007
あなたの問題は、平等をフロートである場合は20にすべての値を変更しようとしています。 「1.02」と表示されるものは実際には例えば「1.019」であるかもしれません。一般的に言えば、フロートの平等を本当にしたいとは思わない。あなたのケースでは解決策はわかりませんが、おそらく 'x> 0.017&x <0.019' – JohnE
のようなものですが、あなたに役立つ関数numclpy isclose()があります。 – JohnE