【发布时间】:2019-07-02 04:22:04
【问题描述】:
我有一个名为 df1 的数据框,如下所示:
Loc Start End
CA 2013-11-08 2014-04-14
CO 2014-04-14 2014-04-16
CA 2014-04-16 2014-04-18
CO 2014-04-18 2014-04-23
我还有另一个名为 df2 的数据框,如下所示:
Date Loc Flag
2014-04-14 CO 0
2014-04-14 CO 0
2014-04-14 CO 0
2014-04-15 CO 0
2014-04-15 CO 0
2014-04-16 CO 0
2014-04-16 CO 0
2014-04-16 VA 0
2014-04-16 CA 0
我想构建一个函数,以便对于df1 中的每个Start 和End 句点,该函数检查df2 中属于该日期范围的行是否与位置匹配,即执行@987654331 @的比赛。在它们不匹配的地方,我希望将Flag 标记为 1。这是我尝试过的代码:
for i in range(len(df1)):
for j in range(len(df2)):
if df2['Date'][j] <= df1['End Date'][i] and \
df2['Date'][j] >= df1['Start Date'][i]:
if df2['Loc'][j] != df1['Loc'][i]:
df2['flag'][j] = 1
我的代码将 1 放在位置实际匹配的位置。我认为这是因为 Start 和 End 日期重叠。关于如何纠正这个问题的任何提示?谢谢你
【问题讨论】:
-
请说明您对标志的预期输出。
标签: python pandas datetime for-loop date-range