【问题标题】:R to Python pandas numpy.where conversionR 到 Python pandas numpy.where 的转换
【发布时间】:2020-10-21 23:48:59
【问题描述】:

使用 numpy.where 语法在 Python(熊猫数据框)中编写以下 R 代码的最佳方法是什么。

Data$new = ifelse(Data$Diff > 1.652*Data$Diff10, 1,
                         ifelse(Data$Diff < 3.95*Data$Diff10, -1, 0 ))

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    你可以使用:

    Data['new'] = np.where(Data['Diff'] > 1.652*Data['Diff10'], 1,
                  np.where(Data['Diff'] < 3.95*Data['Diff10'], -1, 0 ))
    

    编辑:

    上面的代码似乎有逻辑错误,因为永远不会返回0

    可能需要:

    Data = pd.DataFrame({'Diff':[2,4,.5],
                       'Diff10':[1,1,1]})
    
    print (Data)
       Diff  Diff10
    0   2.0       1
    1   4.0       1
    2   0.5       1
    
    Data['new'] = np.where(Data['Diff'] < 1.652*Data['Diff10'], 2,
                  np.where(Data['Diff'] > 3.95*Data['Diff10'], 3, 4 ))
    
    print (Data)
       Diff  Diff10  new
    0   2.0       1    4
    1   4.0       1    3
    2   0.5       1    2
    

    【讨论】:

    • 有效。感谢你的帮助。谢谢!
    • 谢谢。也许你交换&gt;&lt;,所以我添加了工作解决方案,其中两个条件都是False 在最后一行。请检查已编辑的答案。
    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多