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

如何用Pandas分离数据集唯一名称并分别执行遗传算法

按名称分组执行遗传算法的实现方案

核心思路

利用Pandas的groupby功能将数据集按Name列分组,再对每个分组单独调用你已实现的遗传算法函数,最后汇总各组的最优解。

步骤与代码示例

1. (可选)清洗Name列(处理示例中的冗余标点)

示例数据里存在a1和a1.这类疑似重复的名称,先清理避免无效分组:

import pandas as pd

# 假设你的数据集已导入为df
df['Name'] = df['Name'].str.rstrip('.')  # 去掉Name末尾的点符号

2. 定义你的遗传算法函数

确保函数输入为单个分组的DataFrame,输出包含x1-x3最优解的结构(比如字典或Series):

def run_genetic_algorithm(group_df):
    # 这里插入你已实现的遗传算法逻辑
    # 示例逻辑(替换为你的实际代码):
    # 提取当前分组的price和quantity数据
    prices = group_df['price'].values
    quantities = group_df['quantity'].values
    
    # 执行遗传算法计算x1-x3最优解
    # ...(你的算法代码)...
    
    # 返回最优解,比如字典格式
    return {'x1': optimal_x1, 'x2': optimal_x2, 'x3': optimal_x3}

3. 分组执行算法并汇总结果

# 按Name分组,对每个分组应用遗传算法
group_results = df.groupby('Name').apply(run_genetic_algorithm)

# 将结果转换为结构化DataFrame方便查看
results_df = group_results.reset_index(name='Optimal_Solution')

# 拆分最优解到单独列(可选)
results_df[['x1', 'x2', 'x3']] = results_df['Optimal_Solution'].apply(pd.Series)

优化建议

  • 若数据集极大,单线程apply效率不足,可使用并行分组处理(比如借助swifter库实现并行apply,无需额外修改算法逻辑)。
  • 执行前可先确认唯一名称列表:print(df['Name'].unique()),确保分组符合预期。
  • 确保遗传算法函数仅依赖传入的分组数据,避免引用全局变量导致分组间数据污染。

内容的提问来源于stack exchange,提问作者it's M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:01:19