繁体   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