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

基于含分割值的列合并DataFrame并处理profit列分配问题

处理DataFrame explode后profit列的拆分或填充

方案1:按产品数量均分profit

先统计每一行拆分后的产品总数,再将profit按数量均分,让拆分后的每一行利润均等:

# 拆分products列并统计该行的产品总数
Merge_Store_Transaction['products'] = Merge_Store_Transaction['products'].str.split(';')
Merge_Store_Transaction['product_count'] = Merge_Store_Transaction['products'].str.len()

# 拆分产品列并计算均分后的利润
Merge_Store_Transaction = Merge_Store_Transaction.explode('products')
Merge_Store_Transaction['profit'] = Merge_Store_Transaction['profit'] / Merge_Store_Transaction['product_count']

# 不需要统计列的话可以删除
Merge_Store_Transaction = Merge_Store_Transaction.drop('product_count', axis=1)

方案2:仅保留拆分后第一行的profit,其余行填0

如果只需要原行拆分后的第一个产品对应原有利润,其他产品利润设为0:

# 拆分products列并展开
Merge_Store_Transaction['products'] = Merge_Store_Transaction['products'].str.split(';')
Merge_Store_Transaction = Merge_Store_Transaction.explode('products')

# 按原行分组,给每个拆分后的行加组内序号
# 如果你有唯一交易ID(比如transaction_id),可以把level=0换成这个列名
Merge_Store_Transaction['row_order'] = Merge_Store_Transaction.groupby(level=0).cumcount() + 1

# 组内第一行保留原利润,其余设为0
Merge_Store_Transaction['profit'] = Merge_Store_Transaction.apply(
    lambda x: x['profit'] if x['row_order'] == 1 else 0, axis=1
)

# 不需要序号列的话可以删除
Merge_Store_Transaction = Merge_Store_Transaction.drop('row_order', axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:20:50