在多索引的第二级(即d)上切片一个数据帧

2024-04-24 08:55:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个具有类型(int,datetime)的多重索引的数据帧。我想将'actual_12b1'列的条目设置为0.0到NaN,但前提是'begdt'(多重索引的第二级)在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

代码可以工作,但似乎过于复杂。由于我对熊猫还不熟悉(对所有的切片/过滤都感到困惑),我想也许有人可以提出一种更清洁的方法来达到同样的效果。在


Tags: 数据代码类型datadatetime条目nanyear
1条回答
网友
1楼 · 发布于 2024-04-24 08:55:32

您对索引的想法是正确的,但是使用dataframe的replace方法交换值会更容易。例如

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

相关问题 更多 >