【问题标题】:Interpolate position from DataFrame using position before and after datetime使用日期时间之前和之后的位置从 DataFrame 插入位置
【发布时间】:2018-03-08 07:04:09
【问题描述】:

我有一个包含多辆车的日期时间位置数据的 DataFrame。日期时间不连续,同一数据集中有多个车辆。数据集非常大,所以我不确定定期重新采样是否真的是一个可行的选择。

     date_time                     uid   lat    lon
1    2017-09-26 18:23:00.000       ABC   1.00   1.00
2    2017-09-26 18:23:12.000       ABC   1.20   1.20   
3    2017-09-26 18:23:48.000       ABC   1.40   1.40
4    2017-09-26 18:23:52.000       ABC   1.50   1.50
5    2017-09-26 18:23:01.000       DEF   0.10   0.10
6    2017-09-26 18:23:04.000       DEF   0.11   0.11
7    2017-09-26 18:23:24.000       DEF   0.30   0.30
8    2017-09-26 18:23:28.000       DEF   0.32   0.32
9    2017-09-26 18:23:40.000       DEF   0.40   0.40
10   2017-09-26 18:23:03.000       GHI   5.70   5.70
11   2017-09-26 18:23:12.000       GHI   5.80   5.80
12   2017-09-26 18:23:24.000       GHI   5.90   5.90
13   2017-09-26 18:23:30.000       GHI   6.00   6.00
14   2017-09-26 18:24:30.000       JKL   0.00   0.00
15   2017-09-26 18.24.35.000       JKL   1.00   1.00

我想做的是获取给定日期时间值之前和之后/等于的位置,以便我可以插入当时可能的位置。比如:

target_time = '2017-09-26 18:23:12'
mask = df['date_time'] < target_time LIMIT 1 per UID?? & df['date_time'] >= target_time LIMIT 1 per UID??
points = df[mask]

      date_time                     uid   lat    lon
 1    2017-09-26 18:23:00.000       ABC   1.00   1.00
 2    2017-09-26 18:23:12.000       ABC   1.20   1.20   
 6    2017-09-26 18:23:04.000       DEF   0.11   0.11
 7    2017-09-26 18:23:24.000       DEF   0.30   0.30
 10   2017-09-26 18:23:03.000       GHI   5.70   5.70
 11   2017-09-26 18:23:12.000       GHI   5.80   5.80

这对于循环来说非常简单,但速度非常慢,我相信有一个更智能的解决方案。也许甚至可以在一次操作中完成。

任何想法或建议将不胜感激。

【问题讨论】:

    标签: python pandas datetime pandas-groupby


    【解决方案1】:

    1。 数据时间 - 目标时间 2. 找到每个 id 的最小正数和最小负数

    【讨论】:

    • 有没有办法在不使用循环的情况下执行第 2 步?
    • 过滤所有阳性。按 ID 分组。按增量排序。采取第一feom每组。与否定相同
    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多