根据 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
我有一个 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