【发布时间】: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 ))
【问题讨论】:
使用 numpy.where 语法在 Python(熊猫数据框)中编写以下 R 代码的最佳方法是什么。
Data$new = ifelse(Data$Diff > 1.652*Data$Diff10, 1,
ifelse(Data$Diff < 3.95*Data$Diff10, -1, 0 ))
【问题讨论】:
你可以使用:
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
【讨论】:
> 和<,所以我添加了工作解决方案,其中两个条件都是False 在最后一行。请检查已编辑的答案。