Pandas 上带有 if 语句的新列
New column on Pandas with an if statment
我正在尝试重新创建 table 的蓝色面,其中 excel 上的 dnvgl 形状方程为 (=IF('LENGTH (m)'>(3*DEPTH d (m)),"Flat Long shaped","Box/round shaped").
我尝试使用这个公式在 pandas 上执行此操作。
liftinput['DNVGL Shape']= ('Flat Long Shaped' if liftinput['LENGTH (m)'] > (3*liftinput['DEPTH d (m)']) else 'Box/Round Shaped')
我遇到了这个错误 - 'The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().'
你要找的是这个;
import numpy as np
liftinput['DNVGL Shape'] = np.where(liftinput['LENGTH (m)'].gt(liftinput['DEPTH d (m)'].mul(3)), 'Flat Long Shaped', 'Box/Round Shaped')
这可能是您可以做您想做的事情的最有效方式。
我正在尝试重新创建 table 的蓝色面,其中 excel 上的 dnvgl 形状方程为 (=IF('LENGTH (m)'>(3*DEPTH d (m)),"Flat Long shaped","Box/round shaped").
我尝试使用这个公式在 pandas 上执行此操作。
liftinput['DNVGL Shape']= ('Flat Long Shaped' if liftinput['LENGTH (m)'] > (3*liftinput['DEPTH d (m)']) else 'Box/Round Shaped')
我遇到了这个错误 - 'The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().'
你要找的是这个;
import numpy as np
liftinput['DNVGL Shape'] = np.where(liftinput['LENGTH (m)'].gt(liftinput['DEPTH d (m)'].mul(3)), 'Flat Long Shaped', 'Box/Round Shaped')
这可能是您可以做您想做的事情的最有效方式。