2014-02-12 33 views
1

我有一個MultiIndex類型爲(int,datetime)的DataFrame。我想設置0.0到NaN的列'actual_12b1'的條目,但只有在'begdt'(MultiIndex的第二個級別)是在1998年或之前。經過一些試驗和錯誤,我結束了以下代碼:在MultiIndex的第二級是一個日期Slice數據框

year_start1999 = datetime(year=1999, month=1, day=1).date() 
cond1 = data.index.get_level_values('begdt') < year_start1999 
cond2 = data.actual_12b1 == 0.0 
data.actual_12b1[cond1 * cond2] = np.nan 

該代碼的作品,但它似乎過於複雜。由於我是熊貓新手(並且被所有切片/過濾所困惑),我認爲有人可能會提出一種更簡潔的方式來達到同樣的結果。

回答

2

您對索引有正確的想法,但使用數據框的replace方法可以更輕鬆地交換值。例如。

date_selector = df.index.get_level_values('begdt') < pd.datetime(1999, 1, 1) 
df.actual_12b1[date_selector].replace(0.0, np.nan) 
+0

正是我在找什麼,這是更可讀! – vgregoire

相關問題