【问题标题】:Creating a new column from the interaction of three coulmns in Python从 Python 中三列的交互创建一个新列
【发布时间】:2021-03-08 05:35:23
【问题描述】:

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

[]

'Final' 列的公式为:

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

错误是:

ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

【问题讨论】:

    标签: python pandas multiple-columns


    【解决方案1】:

    更改列的名称 mean 否则 pandas 会与方法 mean 混淆。然后,回想一下,python 的 min 和 max 不是矢量化的,但您可以使用 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
    
    

    【讨论】:

      猜你喜欢
      • 2013-06-29
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多