我目前工作的一个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