我用熊猫分析数据。
我尝试过如下获取值c4,但它给了我错误信息"系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。:
def calcc4():
lengthwl = pd.DataFrame(df_sample_merged.LWL)
draughtforep = pd.DataFrame(df_sample_merged.draught)
if draughtforep / lengthwl <= 0.04:
c4 = draughtforep / lengthwl
else:
c4 = 0.04
return c4
我认为我收到了错误,因为数据类型为&#34;如果draughtforep / lengthwl&lt; = 0.04:&#34;是布尔值,但我无法弄清楚我应该做什么来获得c4取决于(draughtforep / lengthwl)值。
谢谢!
////////////加入//////
df = pd.DataFrame([[1, 10], [2, 10], [3, 10]], columns=['A', 'B'])
def calcc7():
breadth = df.A
lengthwl = df.B
if (breadth / lengthwl) < 0.11:
c7 = 0.229577 * (breadth / lengthwl) ** 0.33333
elif (breadth / lengthwl) > 0.11 and (breadth / lengthwl) < 0.25:
c7 = (breadth / lengthwl)
else:
c7 = 0.5 - 0.625 * (breadth / lengthwl)
return c7
calcc7()
答案 0 :(得分:2)
您可以使用嵌套的np.where函数:
def calcc7(df):
res = np.where(df.A / df.B < 0.11,
0.229577 * (df.A / df.B) ** 0.33333,
np.where((df.A / df.B > 0.11) & (df.A / df.B < 0.25),
df.A / df.B,
0.5 - 0.625 * (df.A / df.B)))
return res