python - 根据未来 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 列,如果这会以某种方式影响解决方案,因为我阅读了一些关于设置索引等的类似帖子。
我希望有人可以帮助我。谢谢。
解决方案
我设法通过生成查找字典而不是查看副本数据框来自己解决这个问题,并且运行时间快了几千倍。:)
推荐阅读
- android - 如何在没有剪切和拉伸的情况下设置自定义评分栏的高度和宽度。
- vb.net - 如何在 Visual Basic 中忽略区分大小写?
- c++ - 在我的程序中包含 ntddk.h 和 wdm.h 时出现 100 个错误
- java - 如何使用 Selenium 测试网站上的每个链接
- python - 编写程序在特定位置插入数组中的元素不要使用python中的任何函数
- opengl - GL_SRGB_ALPHA 的 10 位替代品?
- c++ - 从驱动程序创建一个 .h 文件,以便能够在 C++ 中使用驱动程序函数
- c# - DefaultIfEmpty().Max() 仍然抛出“序列不包含元素。”
- java - 使用实例类调用 staic 方法(LocalDate
- android - java.lang.IllegalStateException:RecyclerView 正在计算布局时无法调用此方法