簡體   English   中英

在作為日期的MultiIndex的第二層上切片DataFrame

[英]Slice a DataFrame on second level of MultiIndex that is a date

我有一個具有MultiIndex類型(int,datetime)的DataFrame。 我想將列“ actual_12b1”的條目設置為NaN 0.0,但前提是“ begdt”(MultiIndex的第二級)是在1998年或更早。 經過反復試驗,最終得到以下代碼:

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

該代碼有效,但似乎過於復雜。 由於我剛接觸大熊貓(並被所有切片/過濾功能所迷惑),所以我認為有人可能會提出一種更干凈的方法來實現相同的結果。

您對索引有正確的想法,但是使用數據框的replace方法將更容易交換值。 例如。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM