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

如何用Pandas替换DataFrame中商品成本为同商品上一次成本并删除首次记录

Pandas实现替换商品Cost为上一次记录并删除首次条目

首先创建原始DataFrame:

import pandas as pd

data = {'ID': ['A', 'B', 'C', 'A', 'C', 'O', 'B', 'A', 'B', 'O'], 
        'Item':['Apple','Banana','Carrot','Apple', 'Carrot', 'Orange', 'Banana', 'Apple', 'Banana', 'Orange'], 
        'Cost':[10, 12, 15, 13, 54, 20, 73, 22, 19, 32]}
df = pd.DataFrame(data)

方法一:利用cumcount标记行号结合shift

# 为每个商品分组标记行号(从0开始)
df['row_num'] = df.groupby('Item').cumcount()

# 过滤掉每组首次记录,同时将Cost替换为同组上一次的Cost
result = df[df['row_num'] >= 1].assign(
    Cost=lambda x: x.groupby('Item')['Cost'].shift(1)
).drop('row_num', axis=1).reset_index(drop=True)

方法二:分组后处理每组数据

def process_group(group):
    # 移除每组的第一条记录
    group = group.iloc[1:]
    # 将Cost替换为同组上一行的Cost值
    group['Cost'] = group['Cost'].shift(1)
    return group

result = df.groupby('Item', group_keys=False).apply(process_group).reset_index(drop=True)

两种方法最终得到的结果都与目标DataFrame一致:

print(result)
# 输出:
#   ID    Item  Cost
# 0  A   Apple  10.0
# 1  C  Carrot  15.0
# 2  B  Banana  12.0
# 3  A   Apple  13.0
# 4  B  Banana  73.0
# 5  O  Orange  20.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:09:30