我正在处理这两个数据帧。df1是一个列表,列出了一个人可以做的潜在转变。而df2基本上就是他/她有空时的日程安排。你知道吗
起始点是班次/可用性的开始;结束点是班次/可用性的结束
我想消除所有潜在的转变,该人不能做,因为时间表。例如,你可以看到这个人上午不在,所以我应该删除n1中的0和3索引
我开始做类似的事情df1[df1.starts_at[0] >= df2.starts_at]
,但它不起作用
n1 = {'starts_at': {0: Timestamp('2019-06-02 09:00:00'),
1: Timestamp('2019-06-02 17:00:00'),
2: Timestamp('2019-06-02 14:00:00'),
3: Timestamp('2019-06-03 09:30:00')},
'ends_at': {0: Timestamp('2019-06-02 17:00:00'),
1: Timestamp('2019-06-02 22:30:00'),
2: Timestamp('2019-06-02 22:30:00'),
3: Timestamp('2019-06-03 13:00:00')}}
n2 = {'starts_at': {0: Timestamp('2019-06-01 14:00:00'),
1: Timestamp('2019-06-01 14:41:32.464000'),
2: Timestamp('2019-06-01 15:00:00'),
3: Timestamp('2019-06-02 10:00:00'),
4: Timestamp('2019-06-02 14:00:00'),
5: Timestamp('2019-06-02 17:00:00'),
6: Timestamp('2019-06-02 17:30:00'),
7: Timestamp('2019-06-03 17:00:00')},
'ends_at': {0: Timestamp('2019-06-01 22:30:00'),
1: Timestamp('2019-06-01 22:32:44.862000'),
2: Timestamp('2019-06-01 22:30:00'),
3: Timestamp('2019-06-02 18:30:00'),
4: Timestamp('2019-06-03 00:00:00'),
5: Timestamp('2019-06-03 00:00:00'),
6: Timestamp('2019-06-02 21:00:00'),
7: Timestamp('2019-06-03 23:00:00')}}
df1 = pd.DataFrame(n1)
df2 = pd.DataFrame(n2)
谢谢你的帮助
您可以使用^{} 和^{} with as ufunc with outer来同时比较两个df之间的所有“start\u at”,以及“ends\u at”的相同值。然后在列上使用
any
,以便能够捕获df1中任何可能的行:更详细地说,
np.less_equal.outer(df1.starts_at, df2.starts_at)
给出了一个数组,其中行是df1.starts_at
的值,并将它们与df2
中的起始值进行比较,我们要寻找的是df1
中的起始值是否比df2
中的起始值少(或早):您还可以使用numpybroadcasting电源:
相关问题 更多 >
编程相关推荐