我目前工作的一個CSV數據集看起來像下面(參見下面的測試DF):如何根據熊貓中的多個條件來匹配和計算行數?
這些基本上是移動設備的位置的記錄。 「標識符」唯一標識移動設備,「from_city」和「to_city」是相應的出發和到達城市。因此,對於標識符「A1」,該人在1月2日離開渥太華前往倫敦(記錄編號2),並在1月3日返回(記錄編號5)。而對於標識符爲A2,B1,B2,B3和B6的記錄,由於沒有倫敦到渥太華的記錄,它們將被視爲無回報。
最終,我想要做的是找出所有出發和返回的匹配項,並計算它們對於每個從到城市對。例如:
從渥太華到倫敦:共100次旅行,3天內返回80天,3天后返回10天,10次未返回。
我想我需要在使用標識符和其他列的熊貓中做groupby。但問題是我如何識別標識符組中的返回匹配?
從本質上講,標準應該是:
- 相同標識符
- FROM_CITY和TO_CITY在兩個記錄之間逆轉
- 返回時間應該是晚於發車時間
加,我如何嵌入3天內的標準?
在此先感謝您的幫助!
下面是測試數據幀:
df = pd.DataFrame({
'Identifier': ['A1', 'A2', 'A3', 'A1', 'A3', 'B1', 'C3', 'B2', 'B3', 'B6', 'C3'],
'OS': ['iphone', 'iphone', 'iphone', 'iphone', 'iphone', 'iphone', 'iphone', 'iphone', 'iphone', 'iphone', 'iphone'],
'from_city': ['ottawa', 'ottawa', 'ottawa', 'london', 'london', 'ottawa', 'ottawa', 'ottawa', 'ottawa', 'ottawa', 'london'],
'to_city': ['london', 'london', 'london', 'ottawa', 'ottawa', 'london', 'london', 'london', 'london', 'london', 'ottawa'],
'time': ['1/2/2017 21:00', '1/2/2017 20:00', '12/24/2016 13:00', '1/3/2017 21:00', '1/6/2017 0:00',
'12/10/2016 17:00', '12/22/2016 21:00', '12/17/2016 23:00', '12/14/2016 19:00', '12/20/2016 18:00', '1/3/2017 0:00']
})
注:在上述IMG 5日線的日期應爲「2017年1月3日」,這是上面的固定代碼。
謝謝你@ user666!我會嘗試它,並根據需要upvote和/或標記。 –
看起來你的回答沒有考慮到回報因素 - 城市對需要扭轉,如果第一條記錄是「渥太華倫敦」,那麼基本上回報記錄應該有「倫敦渥太華」。 –
有意義,但是您的數據集沒有這種情況。你能更新你的描述還是示例數據框? – user666