首页 > 解决方案 > 根据未来 X 天相同数据帧的未来值填充 Pandas 数据帧中的新列

问题描述

所以我有一些基于车辆地理位置的数据框。我已经对数据进行了大量预处理,我只缺少最后一列,这是基于已知数据的未来位置。所以数据跨越了 2018 年和 2019 年的整年,我还有 2020 年初到 2019 年底的额外数据。所以基本上,对于每一行数据,每辆车都有一个“区域”位置,其中有一个唯一的 ID。我需要在未来 20 天用“区域”填充每一行。

为了显示数据框的外观,这是它的简化版本:

ID 日期 当前区域 未来地带20天
1 2018-01-01 区域X ?
2 2018-02-01 Z区 ?
3 2018-03-01 Y区 ?
4 2018-04-01 第五区 ?
5 2018-05-01 区域R ?
6 2018-06-01 区J ?
7 2018-07-01 区域L ?
8 2018-08-01 区O ?
9 2018-09-01 区U ?
10 2018-10-01 G区 ?

所以我尝试了一种超级愚蠢的方法,这似乎可行,但我还没有让代码在大样本上完成,因为它的运行时间就像 O(2^n)。它是对两个版本的数据框的嵌套循环,它看起来像这样,虽然它可能无法帮助任何人回答这个问题:

for i, r in df.iterrows():
    vehicle = df.loc[i, "ID"]
    date = df.loc[i, "date"]
    for ind, row in df1.iterrows():
        vehicle1 = df1.loc[ind, "ID"]
        date1 = df1.loc[ind, "date"]
        zone = df1.loc[ind, "Current Zone"]
        if (vehicle == vehicle1) & (date1 == date+timedelta(days=20)):
            df1.loc[i, "FutureLoc20Days"] = zone

最后一点,数据集中实际上有 15 列,如果这会以某种方式影响解决方案,因为我阅读了一些关于设置索引等的类似帖子。

我希望有人可以帮助我。谢谢。

标签: pythonpandasdataframefor-looppopulate

解决方案


我设法通过生成查找字典而不是查看副本数据框来自己解决这个问题,并且运行时间快了几千倍。:)


推荐阅读