gpt4 book ai didi

python - 如何拆分值并在 pandas 数据框中插入新行?

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:03 25 4
gpt4 key购买 nike

我有以下数据框:

      id  sub_id  timestamp            dist     time_dif     speed     status
1 1 1 2016-07-01 00:01:00 20 00:01:00 0.0075 True
2 1 1 2016-07-01 00:01:59 29 00:00:59 0.3450 True
3 1 1 2016-07-01 00:03:00 30 00:01:00 0.0987 True
4 1 2 2016-07-01 00:03:59 21 00:59:00 0.5319 True
5 1 2 2016-07-01 00:05:00 40 00:01:00 0.0076 False

在上面的数据框中,只要距离>30,status = False。

我想要创建一个函数或方法的建议,以便每当状态为“false”时,这意味着距离> 30,(在上面的数据框中,第5行)我可以执行以下操作:

处理 status = False 的行(ROW 5)

第 5 行“dist”下的值(其中 status = False,dist = 40)变为 30,因为 30 是阈值距离,它不能超过 30。因此,40 - 30 = 10,这额外的 10 应移至下一行。

“status”变为“True”(dist = 30)

“速度”保持不变,

“id”、“sub_id”保持不变

“time_diff”有了新值,因为第 5 行有速度和距离,所以可以计算时间

“timestamp”也应该改变,如果我们计算time_diff,我们可以将time_diff添加到第4行中“time”的值并获得第5行的新时间戳。

处理下一行(ROW 6)

现在,只要 dist >30/status = False,就应将第 6 行或后续行插入到数据框中,以便前一行中存在的任何额外距离都会进入此新行。

在上面的示例中,第 6 行下的“dist”的值为 (40-30),即 10。

“id”保持不变,

“sub_id”变为3(增加1),

由于 10 现在小于 30,“status”应该为 true。

“速度”保持不变。

“time_diff”将再次使用第 6 行中的“dist”和“speed”值进行计算。

“timestamp”也将通过将“time_diff”添加到上一行“timestamp”的值来计算

数据框中的其余行照常进行,直到遇到 status = False 的另一行。

此外,可能存在“dist”= 70的情况,因此在这种情况下,dist = 70的行应该有dist = 30,那么下一行应该有dist = 40,它仍然大于30,因此,它应该只保留 30,并将剩余的 10 插入到下一行。

如果有任何不清楚的地方,请告诉我。提前致谢。

最佳答案

我没有包括距离、时间和速度字段的更改,但想法应该是相似的。让我知道这是否有效,我会尝试从那里添加编辑。由于对迭代的对象进行更改通常是不好的,因此我创建了一个新的 DataFrame 来存储更改。

df2 = pd.DataFrame(columns = df.columns)
limit = 30
Index = 0
for row in df.itertuples():
if row[7] == False: # 7 is the index of the status column
tempRow = list(row[:])
tempRow[4]=limit # 4 is the index of the dist column
tempRow[7] = True
df2.loc[Index] = tempRow
Index +=1
tempRow[4] = row[4]-limit
tempRow[7] = tempRow[7] < limit
tempRow [2]= row[2]+1 # 2 is the index of the sub_id column
df2.loc[Index] = tempRow
else:
df2.loc[Index] = row
Index += 1
df2

关于python - 如何拆分值并在 pandas 数据框中插入新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43661765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com