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

基于另一列值替换Pandas DataFrame中Reorder列值的实现

处理Pandas DataFrame的Reorder列

需求说明

给定如下DataFrame:

import pandas as pd

df = pd.DataFrame({
    'Material': ['E01', 'E02', 'E03', 'E04', 'E05', 'E06', 'E07', 'E08', 'E09'],
    'Min_lot': [1, 1, 1, 1, 5, 5, 5, 5, 5],
    'Reorder': [0, -1, 10, 1, 0, -1, 10, 5, 3]
})

需要按照以下规则修改Reorder列(或创建新列):

  • 当Reorder < 0时,替换为0
  • 当Reorder >= Min_lot时,保持原值
  • 当Reorder < Min_lot且Reorder >=0时,替换为Min_lot的值

解决方案

推荐两种高效的向量化实现方式,避免使用低效的循环或apply方法:

方法1:max与clip组合(简洁高效)

通过两步向量化操作直接完成所有规则:

import pandas as pd

# 原始数据
df = pd.DataFrame({
    'Material': ['E01', 'E02', 'E03', 'E04', 'E05', 'E06', 'E07', 'E08', 'E09'],
    'Min_lot': [1, 1, 1, 1, 5, 5, 5, 5, 5],
    'Reorder': [0, -1, 10, 1, 0, -1, 10, 5, 3]
})

# 创建处理后的新列(若要替换原列,直接赋值给df['Reorder']即可)
df['Reorder_Processed'] = df[['Reorder', 'Min_lot']].max(axis=1).clip(lower=0)

逻辑说明:

  1. df[['Reorder', 'Min_lot']].max(axis=1):对每行取Reorder和Min_lot的最大值,自动覆盖"Reorder < Min_lot则替换为Min_lot"的规则
  2. .clip(lower=0):将所有小于0的值替换为0,处理"Reorder < 0则替换为0"的规则

方法2:嵌套numpy.where(逻辑清晰)

如果需要明确拆分规则逻辑,可使用嵌套条件判断:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Material': ['E01', 'E02', 'E03', 'E04', 'E05', 'E06', 'E07', 'E08', 'E09'],
    'Min_lot': [1, 1, 1, 1, 5, 5, 5, 5, 5],
    'Reorder': [0, -1, 10, 1, 0, -1, 10, 5, 3]
})

df['Reorder_Processed'] = np.where(
    df['Reorder'] < 0,
    0,
    np.where(df['Reorder'] >= df['Min_lot'], df['Reorder'], df['Min_lot'])
)

逻辑说明:

  • 第一层判断:若Reorder <0,直接返回0
  • 第二层判断:若Reorder >= Min_lot,保留原Reorder值,否则返回Min_lot值

处理结果

执行代码后得到的最终DataFrame如下:

Material  Min_lot  Reorder  Reorder_Processed
0      E01        1        0                  1
1      E02        1       -1                  0
2      E03        1       10                 10
3      E04        1        1                  1
4      E05        5        0                  5
5      E06        5       -1                  0
6      E07        5       10                 10
7      E08        5        5                  5
8      E09        5        3                  5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:02:05