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

如何基于DataFrame的Code列唯一值拆分子表并按原顺序合并回原表

实现方案

第一步:按Code拆分DataFrame

直接用groupby生成按唯一Code映射的子DataFrame字典,完全满足你拆分出对应编码子表的需求:

import pandas as pd

# 你的示例DataFrame
df = pd.DataFrame({
    'Quantity': [1757, 1100, 2500, 323, 800],
    'Code': ['08951201', '08A85800', '08A85800', '08951201', '08A85800'],
    'Value': [717.0, 0.0, 0.0, 0.0, 0.0]
})

# 拆分得到各编码对应的子DF字典,键是Code值,值是对应子DF
code_df_dict = {code: group for code, group in df.groupby('Code')}

# 按编码取子DF的示例
df1 = code_df_dict['08951201'] # 所有08951201的行
df2 = code_df_dict['08A85800'] # 所有08A85800的行

第二步:处理子表后按原始顺序合并

核心逻辑是保留原始行的索引,拆分后的子表会继承原DF的行索引,处理子表时不要修改索引,合并后按索引排序即可完全恢复原始顺序:

# 这里是你对各个子DF的数值计算逻辑,示例:给df1的Value列加100
code_df_dict['08951201']['Value'] = code_df_dict['08951201']['Value'] + 100

# 合并所有处理后的子DF,再按索引升序排序恢复原始顺序
final_df = pd.concat(code_df_dict.values()).sort_index()

备选稳妥方案(防止处理子表时改动索引)

如果你的处理逻辑需要重置子表索引,可以提前把原始顺序存为单独的列,合并后按该列排序即可:

# 拆分前先存原始顺序列
df['original_order'] = df.index

# 后续拆分、处理逻辑不变
code_df_dict = {code: group for code, group in df.groupby('Code')}
# 子表处理...

# 合并后按原始顺序列排序,再删掉辅助列
final_df = pd.concat(code_df_dict.values()).sort_values('original_order').drop('original_order', axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:45:00