2015-02-17 16 views
7

Tarihlerim tam olan bir dataframe'im var ve ayın her gününü seçmek istiyorum == 12 ve day == 25 ve xmas sütununda sıfırın yerine ekleyin Her neyse bunu yapmak için? kodumun ikinci satırı hata veriyor. Eğer dizileri karşılaştırmak için & kullanmak zorunda gibi çalışmaz çalıştı Temelde nePandalar: belirli bir ay ve gün ile tüm tarihleri ​​seçin

df = DataFrame({'date':[datetime(2013,1,1).date() + timedelta(days=i) for i in range(0,365*2)], 'xmas':np.zeros(365*2)}) 

df[df['date'].month==12 and df['date'].day==25] = 1 
+0

Bunu istiyorsun: 'df.loc [(. == df [ 'tarihi'] ay 12) (. Df [ 'tarihi'] gün == 25), 'noel'] = 1' – EdChum

cevap

9

, buna ek operatör önceliği nedeniyle parantez kullanmak gerekir. Bunun üzerine sen endeksleme gerçekleştirmek için loc kullanmalıdır: datetime ile

df.loc[(df['date'].month==12) & (df['date'].day==25), 'xmas'] = 1 
+0

Deneyimlerim bana sütun adıyla ilgili bir hata verdi, ancak df ['date'] 'yerine 'df.index' kullandım ve gösterdiğiniz gibi çalıştım. – Dave

3

Pandalar Series şimdi farklı davranır. Bakınız .dt accessor.

df.loc[(df['date'].dt.day==25) & (cust_df['date'].dt.month==12), 'xmas'] = 1 
İlgili konular