在pandas中,有没有办法在单个.loc调用中将标签索引和布尔掩码索引结合起来?
目前我有这个:
df.loc[start_date:end_date][[np.is_busday(x, holidays=dd.all_holidays) for x in df.index]]
哪个工作正常,但我很好奇是否有更好的选择。谢谢。
答案 0 :(得分:0)
查询可能更有效,因为它将被矢量化,但这一切都取决于您首先过滤掉的数据量。
{{1}}
旁注,您确定您的布尔掩码有效吗? df和使用掩码索引的数据帧(由loc返回)可能不再具有相同的长度。
答案 1 :(得分:0)
您可以将索引转换为系列,然后使用pd.Series.between
和pd.Series.apply
:
s = pd.Series(df.index)
df.loc[s.between(start_date, end_date) & \
s.apply(np.is_busday, holidays=dd.all_holidays)]