【发布时间】:2021-07-15 01:54:03
【问题描述】:
我需要为我的 daframe "copieddata1" 创建一个新列 (FinalSL),条件如下:
第一步:
If ['defaultstore'] column = 1: then [FinalSL]= 4*['FCST: TOTAL'] column values
if no> then check if ['SSS'] column is supporting the follow condition(2nd Step):
第二步:
3*['FCST: TOTAL'] column values < ['SSS'] column values < 4*['FCST: TOTAL'] column values
所以我有三种可能的结果:
1st' ['SSS'] < 3*['FCST: TOTAL'] then ['FinalSL'] = 3['FCST: TOTAL']
2nd' 3*['FCST: TOTAL'] < ['SSS'], but 4*['FCST: TOTAL'] < SSS tehn ['FinalSL'] = 3['FCST: TOTAL']
3rd' 3*['FCST: TOTAL'] < ['SSS'] < 4*['FCST: TOTAL'] then ['FinalSL'] = ['SSS']
那么,总而言之,我相信我有以下条件适用于我的代码:
if SSS < 3*F then
FinalSL = 3*F
else
if 4*F < SSS then
FinalSL = 3*F
else
FinalSL = SSS
我可以为第一步创建想法,但是如果第一步的第一个条件不成立,则返回值 2 进行测试,但实际上这个“返回 2”应该被第二步条件替换。
我怎样才能创建这个?我使用 lambda 和方法创建了基本思想:
copiedData1['FinalSL'] = np.where(copiedData1['defaultstore']==1,copiedData1['FCST: TOTAL']*4,2)
它有效,但现在我需要处理第二步的权利条件。
任何帮助将不胜感激!谢谢:)
【问题讨论】:
标签: python pandas dataframe lambda multiple-conditions