我有一个相当大的Pandas数据框,看起来像这样。
id rssi location day time
0 2a463296-bd84-512a-8484-9d79649922ae 58 G-19 2016-01-27 12:35:23
1 c6a18d27-63ba-5457-99c1-4c08f6410e33 74 G-19 2016-01-27 12:35:26
2 ee75fa2d-66d9-52e5-9198-a886288ba044 74 G-19 2016-01-27 12:35:28
3 3dc1f5f5-eab3-541c-97f8-e57f32bdf53d 82 G-19 2016-01-27 12:35:28
4 6c1b9019-a6bc-5ed6-82e6-879b7c120991 62 G-19 2016-01-27 12:35:33
26 2a463296-bd84-512a-8484-9d79649922ae 38 G-20 2016-01-27 12:36:58
27 c6a18d27-63ba-5457-99c1-4c08f6410e33 70 G-20 2016-01-27 12:36:59
28 7edb5047-62b8-58bf-89f4-4151d7b694f4 70 G-20 2016-01-27 12:37:01
29 f4c906a8-7680-5bac-b7a0-be408364a268 58 G-20 2016-01-27 12:37:07
...... ...... ...... ......
1546516 c6a18d27-63ba-5457-99c1-4c08f6410e33 58 G-59 2016-01-27 13:53:44
1546517 2a463296-bd84-512a-8484-9d79649922ae 50 G-59 2016-01-27 13:53:48
1546518 10baa504-7eec-522f-990b-61b3c215352d 50 G-59 2016-01-27 13:53:49
1546519 15ce7c62-3014-5734-9025-b658278cd33a 42 G-59 2016-01-27 13:53:51
1546520 54b281f5-e532-5fd8-b681-e5bffcd4d6bb 62 G-59 2016-01-27 13:53:53
1546521 1300368f-c823-5fa7-8241-0b245f601859 46 G-59 2016-01-27 13:53:55
1546522 79f64138-d332-51c8-a583-686f30eb65f9 70 G-59 2016-01-27 13:53:56
每个ID都是WiFi设备的ID。我正在尝试建立设备运动的图片。例如,我想模拟2a463296-bd84-512a-8484-9d79649922ae如何从G-19到G59但在G20上花了1个多小时,所以我们假设该设备刚刚通过G19。
从我进行的测试中,大多数设备每5分钟至少会看一次。显然,当设备通过其中一个探测器时,可能不会将其视为仅在广播WiFi信标时检测到的。
我希望能够显示设备A位于位置1的x时间,然后转到位置2的y时间或通过出口门的位置c并且没有再次看到小时数。
我只担心设备在某一天而不是其他任何一天所做的事情。
解决这个问题的最佳方式是什么?
答案 0 :(得分:0)
使用布尔选择按ID获取所需的项目。使用日期作为条件进一步选择。使用时间列进行数学运算。如果您想查看设备何时不可见,则在按ID选择后查看特定设备时应该会很明显。
有关详细信息,请参阅pandas docs。 pandas Indexing and Selecting
编辑:
for i in df["day"].unique():
date_df = df[df["day"]== i]
ids_seen = set()
for index, row in date_df.iterrows():
if row["id"] not in ids_seen:
'''
Enter nested loop and do some stuff for each unique id. Add it to a set so we can keep track
'''
ids_seen.add(row["id"])