DataFrame'mdeki bir sütundan bazı değerleri değiştirmek istiyorum. Şu anda, df
(df
) 'un çoklu indeksi üzerinden seçerek görünüm görünümüm var (ve değiştirmeyi df
değiştirir).MultiIndex DataFrame'den dilim için yeni değerler atama
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
bir skaler değere df
bir dilim değiştirmeye çalışın: İşte
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
Gerçekten sütunda
birkaç değerlerini değiştirmek istediğiniz
(ve beri indeksleme bir vektör döndürür, bir skaler değer değil, bence bu daha mantıklı olur):
In [6]: df.ix['bar', 'one', :]['A'] = [999, 888]
# again df remains unchanged
0.13 panda kullanıyorum. Bunu yapmanın basit bir yolu var mı?
Geçerli çözüm, df'yi yenisinden yeniden oluşturmak ve istediğim değerleri değiştirmek. Ancak bu zarif değil ve karmaşık veri karelerinde çok ağır olabilir. Benim düşünceme göre sorun .ix ve .loc bir görünüm ama bir kopyasını döndüren değil gelmelidir. Eğer, örneğin tam dizini belirtirseniz
neden sıralanır? En azından açıklayabilir misin? – HadiM
+1, kafa karıştırıcı bir konuya mükemmel bir soru. Düşünebildiğim tek şey, açıklayıcı olmamakla ilgili başlıktan dolayı indirgenmiş olması mı? (ama kim bilir!) –
Başlık için üzgünüm ama ingilizce ana dili konuşmacısı değilim ve konu biraz karmaşık, bu yüzden iyi bir tane bulmak zor :-) Bana bir başlık göndermek istiyorsanız, akımı değiştirebilirim bir. – HadiM