根据 Python 中三列的交互创建新列

Creating a new column from the interaction of three coulmns in Python

我有一个 table,其中最后一列是通过涉及三列的方程导出的。脚本显示错误。

[]

'Final' 列的公式为:

df.['Final']=MAX(0,MIN(df.val,((df.val-df.mean)/df.sd)-10))

错误是:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

更改列的名称 mean 否则 pandas 会与 mean 方法混淆。然后,回想一下 python 最小值和最大值未矢量化,但您可以使用 pandas:

计算它们
import pandas as pd
import numpy as np
df = pd.DataFrame({'val': [46,9,30,31,68,33],
                   'mn': [35,35,35,33,37,37],
                   'sd': [6,5,1,3,3,7]})
df['normed'] = ((df.val - df.mn) / df.sd) - 10
df['minned'] = df[['val', 'normed']].min(axis=1)
df['final'] = df.minned.apply(lambda x: 0 if x < 0 else x)

# val   mn  sd  normed      minned      final
# 0 46  35  6   - 8.166667  - 8.166667  0.000000
# 1 9   35  5   -15.200000  -15.200000  0.000000
# 2 30  35  1   -15.000000  -15.000000  0.000000
# 3 31  33  3   -10.666667  -10.666667  0.000000
# 4 68  37  3     0.333333    0.333333  0.333333
# 5 33  37  7   -10.571429  -10.571429  0.000000