DataFrame の列からいくつかの値を変更したいと思います。現時点では、元のマルチインデックスを介して select からビューdf
を取得しています (変更すると変更されますdf
)。
次に例を示します。
In [1]: arrays = [np.array(['bar', 'bar', 'baz', 'qux', 'qux', 'bar']),
np.array(['one', 'two', 'one', 'one', 'two', 'one']),
np.arange(0, 6, 1)]
In [2]: df = pd.DataFrame(randn(6, 3), index=arrays, columns=['A', 'B', 'C'])
In [3]: df
A B C
bar one 0 -0.088671 1.902021 -0.540959
two 1 0.782919 -0.733581 -0.824522
baz one 2 -0.827128 -0.849712 0.072431
qux one 3 -0.328493 1.456945 0.587793
two 4 -1.466625 0.720638 0.976438
bar one 5 -0.456558 1.163404 0.464295
のスライスをdf
スカラー値に変更しようとしています。
In [4]: df.ix['bar', 'two', :]['A']
Out[4]:
1 0.782919
Name: A, dtype: float64
In [5]: df.ix['bar', 'two', :]['A'] = 9999
# df is unchanged
私は本当に列のいくつかの値を変更したいです(そして、インデックス付けはスカラー値ではなくベクトルを返すので、これはより理にかなっていると思います):
In [6]: df.ix['bar', 'one', :]['A'] = [999, 888]
# again df remains unchanged
私はパンダ0.11を使用しています。これを行う簡単な方法はありますか?
現在の解決策は、新しいものから df を再作成し、必要な値を変更することです。しかし、それはエレガントではなく、複雑なデータフレームでは非常に重くなる可能性があります. 私の意見では、問題はビューではなくコピーを返す .ix および .loc にあるはずです。