如何将按ID序列排列的DataFrame转换为From-To双列结构
重构行程DataFrame生成From/To路径列
给定包含个体ID、访问地点和顺序的DataFrame,我们需要为每个ID生成连续的行程路径(From→To)。
原始数据
ID location order 1 6141500 1 1 6140690 2 2 6141450 1 2 6140430 2 2 6141450 3
期望输出
From To 6141500 6140690 6141450 6140430 6140430 6141450
解决方案(Pandas实现)
核心思路是按ID分组后,通过移位操作获取每个地点的下一个目的地,再过滤掉无后续目的地的行:
import pandas as pd # 构造原始DataFrame df = pd.DataFrame({ 'ID': [1, 1, 2, 2, 2], 'location': [6141500, 6140690, 6141450, 6140430, 6141450], 'order': [1, 2, 1, 2, 3] }) # 按ID分组,生成To列(当前地点的下一个目的地) df['To'] = df.groupby('ID')['location'].shift(-1) # 过滤掉无后续目的地的行,并重命名列得到最终结果 result = df.dropna(subset=['To'])[['location', 'To']].rename(columns={'location': 'From'}).reset_index(drop=True) print(result)
执行后输出与期望一致。
内容的提问来源于stack exchange,提问作者ltong
相关产品推荐
相关产品推荐

