pandas 数据框中列的表达式的条件评估
Conditional evaluation of expression over columns in a pandas dataframe
我有以下数据框:
我正在尝试根据以下条件根据 CHART_TYPE 列值根据以下规则计算 sigma:
If chart type is X-BAR -> SIGMA = (UPPER_CONTROL_LIMIT - LOW_CONTROL_LIMIT)/6
If chart type is MIN -> SIGMA = (TARGET - LOW_CONTROL_LIMIT)/3
If chart type is MAX -> SIGMA = (UPPER_CONTROL_LIMIT - TARGET)/3
请指教
您应该可以在这里使用 df.apply
。
首先,创建一个助手:
def func(row):
if row['CHART_TYPE'] == 'X_BAR':
return (row['UPPER_CONTROL_LIMIT'] - row['LOW_CONTROL_LIMIT']) / 6
elif row['CHART_TYPE'] == 'MIN':
return (row['TARGET'] - row['LOW_CONTROL_LIMIT']) / 3
return (row['UPPER_CONTROL_LIMIT'] - row['TARGET']) / 3
现在,致电df.apply
:
df.SIGMA = df.apply(func, axis=1)
我有以下数据框:
我正在尝试根据以下条件根据 CHART_TYPE 列值根据以下规则计算 sigma:
If chart type is X-BAR -> SIGMA = (UPPER_CONTROL_LIMIT - LOW_CONTROL_LIMIT)/6
If chart type is MIN -> SIGMA = (TARGET - LOW_CONTROL_LIMIT)/3
If chart type is MAX -> SIGMA = (UPPER_CONTROL_LIMIT - TARGET)/3
请指教
您应该可以在这里使用 df.apply
。
首先,创建一个助手:
def func(row):
if row['CHART_TYPE'] == 'X_BAR':
return (row['UPPER_CONTROL_LIMIT'] - row['LOW_CONTROL_LIMIT']) / 6
elif row['CHART_TYPE'] == 'MIN':
return (row['TARGET'] - row['LOW_CONTROL_LIMIT']) / 3
return (row['UPPER_CONTROL_LIMIT'] - row['TARGET']) / 3
现在,致电df.apply
:
df.SIGMA = df.apply(func, axis=1)