Pandas 比较下一行并根据条件合并

Pandas compare next row and merge based on conditions

我有以下数据框。其中开始+时间=结束 我想检查当前行的 id END = 下一行的 START 然后合并提供“ID”的 2 行 hsould 相同

所以输出应该是这样的, So the output is as below

我不确定你的数据是如何格式化的,但你可以直接替换。 我建议您使用 numpy 并尝试以下方法:

i=0
while i != len(data):
    if data[i][4] == data[i+1][2]:
        data[i][4] = data[i+1][2]
        data[i+1].pop
    else :
        i+=1

样本 DF

       Start    Time   End      ID
  0    43500    60     43560    23
  1    43560    60     43620    23 
  2    43620    1020   44640    24 
  3    44640    260    44900    24
  4    44900    2100   47000    24

代码:

a = df["ID"].tolist()
arr = [] 
t = True
for i in sorted(list(set(a))):
    j = 1
    k = 0
    temp = {}
    tempdf = df[df["ID"] == i]
    temp["Start"] = tempdf.iloc[k]["Start"]
    temp["Time"] = tempdf.iloc[k]["Time"]
    temp["End"] = tempdf.iloc[k]["End"]   
    temp["ID"] = tempdf.iloc[k]["ID"]

    while j < len(tempdf):
        if temp["End"] == tempdf.iloc[j]["Start"]:
            temp["End"] = tempdf.iloc[j]["End"]
            temp["Time"] += tempdf.iloc[j]["Time"] 
         j += 1  
        
    arr.append(temp)       

df = pd.DataFrame(arr)

输出方向:

        Start   Time    End     ID
   0    43500   120     43620   23   
   1    43620   3380    47000   24