2013-10-21 16 views
8

"FreeSec" sütunun değerlerini pandalar veri çerçevemin filtrelenmiş satırları için True olarak ayarlamaya çalışıyorum. Ben değerlerini kontrol ederkenBoole filtrelenmiş veri çerçevesi sütunlarının değerlerine değerlerin nasıl ayarlanacağı

data[data["Brand"].isin(group_clients)].FreeSec = True 

Ancak, bunlar yine False ayarlanır: İşte kodudur.

>>> data[data["Brand"].isin(group_clients)].FreeSec 

12  False 
163 False 
164 False 
165 False 
166 False 
167 False 
168 False 
169 False 

Burada nelerin eksik? Ben Pandalar konusunda uzman değilim, bu yüzden böyle çalışıyor neden kontrol etmek zorunda

data["FreeSec"][data["Brand"].isin(group_clients)] = True 

:

cevap

14

O atama garauntee olacak, zincirleme olmadan bu yapmak loc kullanmalıdır çalışır : aslında olsun uygulanması detay a view or a copy önemli değil böylece loc

data.loc[data["Brand"].isin(group_clients), "FreeSec"] = True 

Atama geçersiz kılınır Eğer zincir çok dikkatli olursanız olun/çok dikkatli olun.

+0

+ 1 kabul bu yararlı ve kabul edilen keneler ile kabul edilebilir –

+0

! thats "adil olmak" bir tane kabul edildim bir başka o_O – kannbaba

+0

Ne yararlı olduğunu bilmiyorum, ama birden fazla cevap verebilirsin :) –

2

Tam tersi çalışır.

+1

http://pandas.pydata.org/pandas-docs/dev/indexing.html#returning-a-view-versus-a-copy –

+0

Kopyalama sorununa karşı görünümü döndürme. çok teşekkür ederim! – kannbaba

+0

Teşekkürler, OP bir kopya döndürür, ancak tam kurallar hakkında bilmiyordum –

İlgili konular