の外を変更しない:私はDFにアクセスしたときパンダデータフレームの値は、私は私はこのようなパンダのデータフレームの値を変更ループの内部パンダのデータフレームを持っている機能
df[item].ix[(e1,e2)] = 1
しかし、値がまだ変更されていません。あなたはどこが間違っているのかを知っていますか?
提案がありますか?
の外を変更しない:私はDFにアクセスしたときパンダデータフレームの値は、私は私はこのようなパンダのデータフレームの値を変更ループの内部パンダのデータフレームを持っている機能
df[item].ix[(e1,e2)] = 1
しかし、値がまだ変更されていません。あなたはどこが間違っているのかを知っていますか?
提案がありますか?
通常、問題を引き起こす連鎖インデックスを使用しています。コードでは、df[item]
が系列を返し、次に.ix[(e1,e2)] = 1
がその系列を変更し、元のデータフレームは変更されません。
import pandas as pd
df = pd.DataFrame({'colA': [5, 6, 1, 2, 3],
'colB': ['a', 'b', 'c', 'd', 'e']})
print df
df.ix[[1, 2], 'colA'] = 111
print df
コードは111行に1コーラの2を設定しますので、私はあなたがする探していたものの一種であると信じている:あなたはこのように、代わりに元のデータフレームを変更する必要があります。 1と2はもちろん変数に置き換えることができます。 https://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
サイドノート:
colA colB
0 5 a
1 6 b
2 1 c
3 2 d
4 3 e
colA colB
0 5 a
1 111 b
2 111 c
3 2 d
4 3 e
が連鎖インデックスの詳細については、マニュアルを参照してくださいまた、あなたは、ループ内のデータフレームを変更するに述べたことから、一般的にあなたのコードを再考することをお勧めします。パンダを使用するときは、通常、代わりにセットベースの操作をループして活用することができます。これまで慣れていたものがありますが、ライブラリのフルパワーを解く方法です。
'.ix'は使用しないでください。廃止予定です。しかし、私は問題が 'df [item]'がコピーを返すことであると思っています。それをコピーしてすぐに破棄してください。 'df.loc [item、(e1、e2)] = 1'を試してみてください。 –
Elisha512、あなたの問題を解決した場合は、私の答えを受け入れるか、他に何ができるのか教えてください。ありがとう。 – MarredCheese