0
辞書に基づいてデータフレームの列の値を更新するにはどうすればよいですか?.locと.replace()を併用する
例えば、私がどのように見えるDFがあります。このGIV df = pd.DataFrame({'B' : [100,101,102,103],'E' : pd.Categorical(["test","train","test","train"]), 'F' : [128,300,1205,2000]})
Out[28]:
B E F
0 100 test 128
1 101 train 300
2 102 test 1205
3 103 train 2000
dict = {300:301, 2000:2001}
df.loc[df['B'].isin([101,103])].replace(dict)
Out[31]:
B E F
1 101 train 301
3 103 train 2001
を適切な結果が得られますが、これを実行するとCopy Warningが発生し、元のデータフレームをこのロジックで更新する必要があります。
また、非常に非効率的に行うと、コンボは機能しますが、明らかに最適ではありません。
どうすればこの問題を解決できますか?
おかげで、私の前にupdate' '使用されることはありません。また、私はちょうど 'replace'がどのカラムをどのように動作させるかを知っていますか?それは明示的に言われていません.....それは単にdfのすべての価値に適用されますか?もしそうなら、場合によっては特定の列にのみ適用する方法がありますか? – guy
'df.update(df.loc [mask、cols] .replace(d))'や 'df.loc [mask、cols]のように、サブセット化のために' loc'に列名を追加し、 = df.loc [mask、cols] .replace(d) 'cols'は列名のリストであると仮定します。例えば' cols = ['F'] 'です。 – Psidom
ありがとう、あなたのソリューションは私の整数を浮動小数点に変換します。 – guy