You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAS编程:移除城市间距离数据中的往返重复记录

移除城市往返重复记录的解决方案

嘿,我来帮你搞定这个问题!要移除这种出发地和目的地互为往返的重复记录,我们可以用Python的pandas库轻松实现,核心思路是给每一对路线生成一个标准化的唯一标识,让往返的记录拥有相同的标识,之后就能方便地去重了。

步骤1:加载原始数据

首先我们把你的数据集转换成pandas DataFrame:

import pandas as pd

# 你的原始数据
raw_data = {
    'Source': ['USA', 'USA', 'UK', 'Germany', 'Spain'],
    'Destination': ['UK', 'Spain', 'USA', 'Spain', 'USA'],
    'Distance': [1000, 200, 1000, 500, 200]
}
df = pd.DataFrame(raw_data)

步骤2:生成标准化路线标识

我们给每一行生成一个排序后的路线元组(比如把USA-UK和UK-USA都转换成('UK', 'USA')),这样往返路线就会有完全相同的标识:

# 创建标准化路线列:将出发地和目的地按字母排序后组合成元组
df['standardized_route'] = df.apply(
    lambda row: tuple(sorted([row['Source'], row['Destination']])),
    axis=1
)

步骤3:去重并清理结果

基于标准化路线列去重,保留每个唯一路线的第一条记录(因为你的数据中往返距离一致,保留任意一条都可以),最后删掉临时的标准化路线列:

# 去重,保留每个唯一路线的第一条记录
cleaned_df = df.drop_duplicates(subset='standardized_route', keep='first').drop('standardized_route', axis=1)

# 查看清理后的结果
print(cleaned_df)

最终输出结果

运行上面的代码后,你会得到以下清理后的数据集:

SourceDestinationDistance
USAUK1000
USASpain200
GermanySpain500

额外提示

如果你的数据中存在往返距离不一致的情况,你可以用聚合函数来处理距离(比如取平均值、最大值等),示例代码如下:

# 按标准化路线分组,聚合距离(这里以平均值为例)
aggregated_df = df.groupby('standardized_route').agg(
    Source=('Source', 'first'),
    Destination=('Destination', 'first'),
    Average_Distance=('Distance', 'mean')
).reset_index(drop=True)

内容的提问来源于stack exchange,提问作者P.Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:07:56