【发布时间】:2019-07-26 10:43:04
【问题描述】:
我有一个数据框,其中包含一组指令,其中包括开始时间和结束时间。我有第二个日期框架,其中包含另一组指令,只有一个时间。
仅当 timefrom 不在第一个 df 中的时间之间时,才包含来自第二个数据帧的指令。基本上第一个数据帧时间优先。
我想引用数据帧并删除第二个数据帧中被第一个数据帧取代的时间。
此代码循环遍历与不同机器关联的大量数据帧。
我一直在使用 df.iat 和 df.between_time 的组合,但没有运气。
我还按照以下链接尝试了 .loc,但在从单独的数据帧中引用开始和结束时间时,它似乎不起作用。 calculate if date value occurs between two different times python pandas
df=
timeFrom timeTo
1. 2013-10-09 05:28:00 2013-10-10 05:31:00
2. 2013-10-09 05:53:00 2013-10-10 06:01:00
3. 2013-10-09 05:56:00 2013-10-10 06:03:00
df2 = timeFrom x
1. 2013-10-09 05:30:00 2100
2. 2013-10-09 05:43:00 5
3. 2013-10-09 05:55:00 50
df2 = df2.set_index(pd.DatetimeIndex(df2["timeFrom"]))
for i in range(1, len(df)):
start = df.iat[i, 2]
end = df.iat[i, 3]
df2 = df2.drop(df2.between_time(start, end).index)
我希望 df2 与唯一需要处理的指令一起返回。在这种情况下:
2. 2013-10-09 05:43:00 5
但是当前代码导致:
ValueError: Cannot convert arg ['2019-05-01 05:28:00'] to a time
【问题讨论】: