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
时间: 2024-03-28 07:37:04 浏览: 116
这个错误提示是因为在执行 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()`方法将其降为单个值。
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
这个错误的原因是在执行 round() 函数时,参数的类型不正确。你需要先将参数转换为浮点数类型,然后再执行 round() 函数。可以使用 float() 函数将参数转换为浮点数类型,如下所示:
```
canshu_df.loc[rows, '载荷比值_极限'] = round(float(canshu_df.loc[rows, '项目载荷_极限']) / float(canshu_df.loc[rows, '(原始载荷)极限1e7']), 2)
```
这样就能够避免这个错误了。
阅读全文