【发布时间】:2021-07-13 05:46:23
【问题描述】:
所以我有一些基于车辆地理位置的数据框。我已经对数据进行了大量预处理,我只缺少最后一列,这是基于已知数据的未来位置。所以数据跨越了 2018 年和 2019 年的整年,我还有 2020 年初到 2019 年底的额外数据。所以基本上,对于每一行数据,每辆车都有一个“区域”位置,其中有一个唯一的 ID。我需要在未来 20 天后用“区域”填充每一行。
为了展示数据框的外观,这里是它的简化版本:
| ID | Date | CurrentZone | FutureZone20Days |
|---|---|---|---|
| 1 | 2018-01-01 | ZoneX | ? |
| 2 | 2018-02-01 | ZoneZ | ? |
| 3 | 2018-03-01 | ZoneY | ? |
| 4 | 2018-04-01 | ZoneV | ? |
| 5 | 2018-05-01 | ZoneR | ? |
| 6 | 2018-06-01 | ZoneJ | ? |
| 7 | 2018-07-01 | ZoneL | ? |
| 8 | 2018-08-01 | ZoneO | ? |
| 9 | 2018-09-01 | ZoneU | ? |
| 10 | 2018-10-01 | ZoneG | ? |
所以我尝试了一种超级愚蠢的方法,这似乎可行,但我还没有让代码在大样本上完成,因为它的运行时间就像 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 列,如果这会以某种方式影响解决方案,因为我阅读了一些关于设置索引等的类似帖子。
我希望有人可以帮助我解决这个问题。谢谢。
【问题讨论】:
标签: python pandas dataframe for-loop populate