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

Python DataFrame行操作:无需循环按地点分组聚合技术与频率的高效方法

实现方案

你可以直接使用 pandas 内置的分组聚合与透视功能实现需求,所有操作均为向量化执行,无 Python 层遍历,效率远高于手动循环:

  1. 先做数据预处理,把 Frequency 转为字符串类型方便拼接:
import pandas as pd

# 将频率列转为字符串,避免拼接时类型报错
df['Frequency'] = df['Frequency'].astype(str)
  1. 按 Location Code 分组聚合公共字段,同时合并所有技术类型:
# 公共字段(纬度、经度等同一个位置编码对应值一致)直接取第一条即可
base_info = df.groupby('Location Code').agg(
    Technologies=('Technology', lambda x: ','.join(sorted(x.unique()))),
    Latitude=('Latitude', 'first'),
    Longitude=('Longitude', 'first')
    # 其余公共字段均可按此格式补充,取值统一用first
).reset_index()
  1. 透视生成不同技术对应的频率列:
# 按位置+技术分组拼接频率,再转为宽表
freq_df = df.groupby(['Location Code', 'Technology'])['Frequency']\
            .agg(lambda x: ','.join(sorted(x, key=int)))\
            .unstack(fill_value='n/a')\
            .reset_index()

# 重命名列名匹配你的需求
freq_df.columns = [col if col == 'Location Code' else f"{col}'s" for col in freq_df.columns]
  1. 合并两张表得到最终结果:
result = pd.merge(base_info, freq_df, on='Location Code', how='left')

如果需要调整频率的排序规则,修改agg中sorted的参数即可。

内容的提问来源于stack exchange,提问作者tareenmj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:54:06