如何在 Pandas 中使用 MultiIndex select 数据帧的行

How to select rows of a dataframe using MultiIndex in Pandas

我有这两个数据框需要关联。

第一个,HOLIDAYS,给我当地的节日日期和庆祝节日的商店代码

Holiday date Store code
01/02 18005
01/02 18032
... ...
31/03 18043

第二个,BALANCE,以日期和门店数为索引,显示特定日期的门店余额。

balance
01/02 18001 ,00
01/02 18002 ,00
... ... ...
31/03 18099 ,45

我需要做的是在 BALANCE 中创建一个名为 Holiday 的列,其中包含一个布尔值,显示某行是否显示假期期间获得的余额。

我尝试创建列 'Holiday' 将初始值设置为 False,然后将 BALANCE 数据帧索引中的每个 HOLIDAY 值分配给 True,我得到 ValueError(可能是因为无法传递数据帧作为其他的索引)。我尝试将 HOLIDAY 转换为 MultiIndex,但它再次不起作用。

BALANCE['Holiday'] = False
H = pd.MultiIndex.from_frame(HOLIDAY)
BALANCE.loc[H, 'Holiday'] = True

我很确定这应该不难,但我现在没主意了。有什么方法可以将第一个数据帧用作第二个数据帧的 MultiIndex 吗?

您的示例没有任何匹配的行,但这应该有效:

HOLIDAYS['is_holiday'] = True

res = pd.merge(BALANCE,
               HOLIDAYS, 
               how='left',
               left_index=True, 
               right_on=['Holiday_date', 'Store_code'])

res['is_holiday'] = res['is_holiday'].fillna(False)