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

使用Python的Pandas合并行数据:配方系统CSV生成需求

解决配方系统数据合并问题

看起来你需要把同一厂商(Manufacturer)和产品(Product)的多行数据合并成一行,将Data1-3的内容依次拼接,不足的位置补0。下面是用Pandas实现的具体方案,应该能完美匹配你的需求:

步骤说明与代码实现

假设你已经用Pandas读取了原始数据并存储在df这个DataFrame中,我们可以按以下步骤处理:

  1. 分组并收集所有Data列的值
    先按Manufacturer和Product分组,把每组里的Data1、Data2、Data3按行顺序拼接成一个扁平化的列表:

    # 分组后将每组的Data1-3转为扁平化列表
    grouped = df.groupby(['Manufacturer', 'Product']).apply(
        lambda x: x[['Data1', 'Data2', 'Data3']].values.flatten().tolist()
    ).reset_index(name='combined_data')
    
  2. 确定最大需要的列数
    找到所有组中最长的combined_data长度,确保所有行的列数统一,不足的位置用0填充:

    max_length = grouped['combined_data'].apply(len).max()
    
  3. 补0并拆分列表为多列
    把每个组的combined_data补0到max_length长度,再拆分成单独的列,最后和厂商、产品列合并:

    # 给短列表补0到最大长度
    grouped['combined_data'] = grouped['combined_data'].apply(
        lambda lst: lst + [0]*(max_length - len(lst))
    )
    # 将列表拆分为多列
    expanded_data = pd.DataFrame(grouped['combined_data'].tolist(), index=grouped.index)
    # 合并分组信息和展开的数据
    final_df = pd.concat([grouped[['Manufacturer', 'Product']], expanded_data], axis=1)
    
  4. 导出为目标CSV
    最后把处理好的数据导出为CSV文件,如果你需要空格分隔(和你示例格式一致),可以指定分隔符:

    # 空格分隔,不保留索引和默认表头
    final_df.to_csv('merged_recipes.csv', index=False, header=False, sep=' ')
    

测试验证

用你提供的测试数据运行代码后,输出的CSV内容会和你期望的完全一致:

Test 1 Product 1 1 2 3 0 0 0 0 0 0
Test 1 Product 2 4 5 6 0 0 0 0 0 0
Test 2 Product 1 1 2 3 0 0 0 0 0 0
Test 3 Product 1 1 2 3 4 5 6 7 8 9

如果需要调整列名、分隔符或者其他细节,随时调整代码参数即可!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:28:45