我有如下日历数据框
calendar = pd.DataFrame({"events": ["e1", "e2", "e3"],
"date_start": ["2021-02-01", "2021-02-06", "2021-02-03"],
"date_end":["2021-02-04", "2021-02-07", "2021-02-03"],
"country": ["us", "us", "uk"]})
calendar["date_start"] = pd.to_datetime(calendar["date_start"])
calendar["date_end"] = pd.to_datetime(calendar["date_end"])
我有一个每日数据框,如下所示
daily = pd.DataFrame({"date": pd.date_range(start="2021-02-01", end="2021-02-08"),
"value":[10, 20, 30, 40, 50, 60, 70, 80]})
我只想从我们这里获取事件并加入到每日数据帧,但加入条件是(date>;=date\u start)和(date<;=date\u end)。因此,预期的输出如下所示
date value events
2021-02-01 10 e1
2021-02-02 20 e1
2021-02-03 30 e1
2021-02-04 40 e1
2021-02-05 50
2021-02-06 60 e2
2021-02-07 70 e2
2021-02-08 80
我可以做循环,但它是无效的。我可以听听你的建议吗
这是你问题的可能答案
为了获得预期的df,我们可以使用代码
expected_df = pd.merge(daily,final_df,how='left')[['date','value','events']]
使用^{} :
您可以先分解日历,然后在天合并:
我认为这比提供的其他答案要快(没有)
相关问题 更多 >
编程相关推荐