如何比较一列的行值并更新另一列?

问题描述

我有一个数据框列,如下所示:

项目
苹果
苹果
苹果
芒果
芒果
樱桃

我正在尝试使用它生成一个新列(结果)。我比较行,如果前一行值与当前行值相同,则结果列中的数字保持不变,否则它会增加

项目 结果
苹果 1
苹果 1
苹果 1
芒果 2
芒果 2
樱桃 3

我可以通过将 item 列转换为列表来实现这一点,但想知道是否有更快的方法来做到这一点。

解决方法

使用 batch_transformer = Transformer( model_name=create_step.properties.ModelName,instance_type=deploy_instance_type.default_value,instance_count=deploy_instance_count.default_value,output_path=f"{raw_input_data_s3_uri}output/",strategy='MultiRecord',env=batch_env,assemble_with='Line',accept='text/csv',max_concurrent_transforms=1,max_payload=1,# This is in Megabytes (not number of records) ) ,比较列,然后做布尔变量的累加:

.shift()

打印:

df["result"] = (df["items"] != df["items"].shift(1)).cumsum()
print(df)