canshu_df.loc[rows, '载荷比值_极限'] = round(canshu_df.loc[rows, '项目载荷_极限'] / canshu_df.loc[rows, '(原始载荷)极限1e7'], 2) TypeError: loop of ufunc does not support argument 0 of type float which has no callable rint method
时间: 2024-03-27 21:40:20 浏览: 174
这个错误的原因是在执行 round() 函数时,参数的类型不正确。你需要先将参数转换为浮点数类型,然后再执行 round() 函数。可以使用 float() 函数将参数转换为浮点数类型,如下所示:
```
canshu_df.loc[rows, '载荷比值_极限'] = round(float(canshu_df.loc[rows, '项目载荷_极限']) / float(canshu_df.loc[rows, '(原始载荷)极限1e7']), 2)
```
这样就能够避免这个错误了。
相关问题
canshu_df.loc[rows, '项目载荷_疲劳'] = round(canshu_df.loc[rows, '项目载荷_Mx']/canshu_df.loc[rows, '(原始载荷)疲劳_Mx'], 2) TypeError: loop of ufunc does not support argument 0 of type float which has no callable rint method
这个错误提示是因为在执行 round 函数时出现了问题。具体来说,是因为 round 函数的参数中包含了一个 float 类型的对象,而该对象没有可调用的 rint 方法。
可能的解决方案是检查一下参数传递是否正确。在这个例子中,可以尝试将 round 函数的参数改为一个可调用 rint 方法的对象,例如整型或 numpy 数组。另外,还可以尝试使用 numpy 中的 around 函数代替 round 函数,该函数可以对数组中的元素进行四舍五入,避免了循环的问题。
canshu_df.loc[rows, '项目载荷_疲劳'] = max(canshu_df.loc[rows, '项目载荷_Mx']/canshu_df.loc[rows, '(原始载荷)疲劳_Mx'], canshu_df.loc[rows, '项目载荷_My']/canshu_df.loc[rows, '(原始载荷)疲劳_My']) ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
这个错误通常是由于条件语句中使用了Series而不是单个值导致的。你可以尝试使用`.any()`或`.all()`方法来将Series降为单个值。比如,将条件语句改为:
```
max((canshu_df.loc[rows, '项目载荷_Mx']/canshu_df.loc[rows, '(原始载荷)疲劳_Mx']).max(), (canshu_df.loc[rows, '项目载荷_My']/canshu_df.loc[rows, '(原始载荷)疲劳_My']).max())
```
这样可以将两个Series中的最大值取出来,并且使用`.max()`方法将其降为单个值。
阅读全文