我有一个包含如下数据的数据帧(数据的小子集):
我试图找到一种方法,在这个方法中,我可以创建一个新的dataframe,它包含对以下对象具有相同值的所有行:carrier
,flightnumber
,departureAirport
和{
我所说的重叠是指一行的effectiveDate
位于另一个记录的effectiveDate
和{
所以在我上面的例子中,前两行被认为是一个例子(应该都包含在新的数据帧中),但是第三行不是。在
我假设我想使用groupby,但我不太清楚我将应用什么聚合函数。以下是我目前所掌握的情况:
df.groupby(['carrier','flightnumber','departureAirport','arrivalAirport'])['effectiveDate', 'discontinuedDate'].min()
但显然我需要应用一个确定重叠的函数,而不是min()
。如何确定重叠而不是返回该组的最小值?在
更新:
^{pr2}$更新2:
至于输出,我希望在新的数据帧中返回任何重叠的行,carrier
,flightnumber
,departureAirport
和{
carrier flightnumber departureAirport arrivalAirport effectiveDate discontinuedDate
4U 9748 DUS GVA 2017-05-09 2017-07-12
4U 9748 DUS GVA 2017-05-14 2017-07-16
AG 1234 SFO DFW 2017-03-09 2017-05-12
AG 1234 SFO DFW 2017-03-14 2017-05-16
请注意,只有一条记录被排除(第三条记录用于9748
)-这是因为它的日期范围与同一航班的其他记录不重叠。在
高级概念
effectiveDate
排序。在1
时,就会发生重叠。当和下降到0
时,一个连续的组结束。在1
的拆分。在loc
来获取切片数据帧。在相关问题 更多 >
编程相关推荐