私は以下のようなデータが含まれているデータフレーム(データの小さなサブセット)を持っている:日付範囲が重複している行を検索するにはどうすればよいですか?
私は私が持っているすべての行を含む新しいデータフレームを作成することができる方法を把握しようとしていますcarrier
,flightnumber
,departureAirport
およびarrivalAirport
の同じ値が重複する日付範囲もあります。
はオーバーラップすることにより、私はeffectiveDate
いずれかの行は、私が言及された他の列の同じ値を持つ別のレコードのeffectiveDate
とdiscontinuedDate
間に入る意味します。
私の上記の例では、最初の2行はこれの例とみなされます(また、両方とも新しいデータフレームに含める必要があります)が、3行目は含まれません。
私はgroupbyを使用したいと思っていますが、どの集約機能を適用するかは完全にはわかりません。以下は、私がこれまで持っているものです。
df.groupby(['carrier','flightnumber','departureAirport','arrivalAirport'])['effectiveDate', 'discontinuedDate'].min()
が、明らかに私はmin()
の代わりにオーバーラップするかを決定する関数を適用する必要があります。このグループの最小値を返すのではなく、どのようにオーバーラップを特定するのですか?
UPDATE:
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
4U 9748 DUS GVA 2017-07-18 2017-08-27
AG 1234 SFO DFW 2017-03-09 2017-05-12
AG 1234 SFO DFW 2017-03-14 2017-05-16
はUPDATE 2:で返さ限り出力はIが重なるとcarrier
に同じ値を持つ行をしたいのですが行くよう
、flightnumber
、departureAirport
とarrivalAirport
新しいデータフレームこれらの行には追加のデータを含める必要はありません。したがって、上記の例のデータのために、以下のようなデータフレームは、私の所望の出力のようになります。レコードは1つだけ(9748
ための第三)は除外されていることを
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
お知らせ - それは日付範囲だからこれは重複しません同じフライトの他の記録と比較します。
は何をやりたいのですか?あるいは何かがこれらのシナリオを妨害していますか? – EFT
複数の行が重なっている場合は、それらのすべてを返すことにします。いずれかの行が他の行と重なっている場合は、他の行との関係にかかわらず返すことにします。それは理にかなっていますか? –
@piRSquared - sure。私は先に進んで、私の希望する出力に関する2番目のアップデートを追加しました。あなたがまだ周りにいる場合は、見て、それが明確にすることができれば私に知らせるために自由に感じる。乾杯。 –