Traceback (most recent call last): File "C:/Users/DELL/Desktop/python_flask-dc/python_flask/bpnn_tf.py", line 106, in <module> last_three = column.str[-3:].tolist() File "E:\python-3.7.0\lib\site-packages\pandas\core\generic.py", line 5137, in __getattr__ return object.__getattribute__(self, name) File "E:\python-3.7.0\lib\site-packages\pandas\core\accessor.py", line 187, in __get__ accessor_obj = self._accessor(obj) File "E:\python-3.7.0\lib\site-packages\pandas\core\strings.py", line 2100, in __init__ self._inferred_dtype = self._validate(data) File "E:\python-3.7.0\lib\site-packages\pandas\core\strings.py", line 2157, in _validate raise AttributeError("Can only use .str accessor with string values!") AttributeError: Can only use .str accessor with string values!
时间: 2023-07-24 22:50:32 浏览: 198
这个错误信息是由于你使用了`pandas`库中的`str`属性,但是该属性只能用于字符串类型的数据,而你传入的数据类型不是字符串类型,导致报错。
解决方法:
1. 检查你传入的数据类型是否正确。如果不是字符串类型,则需要将其转换为字符串类型。
2. 如果你的数据类型是`pandas`的`Series`类型,可以使用`astype()`函数将其转换为字符串类型,例如:
``` python
import pandas as pd
# 将数字类型的Series转换为字符串类型
s = pd.Series([1, 2, 3])
s = s.astype(str)
```
3. 如果你的数据类型是`pandas`的`DataFrame`类型,可以使用`apply()`函数将其每一列转换为字符串类型,例如:
``` python
import pandas as pd
# 将数字类型的DataFrame每一列转换为字符串类型
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df = df.apply(lambda x: x.astype(str))
```
4. 如果你的数据类型是列表类型,则可以使用列表推导式将其转换为字符串类型,例如:
``` python
# 将数字类型的列表转换为字符串类型
a = [1, 2, 3]
a = [str(i) for i in a]
```
在将数据类型转换为字符串类型之后,再使用`str`属性提取每个单元格中的最后三个数字即可。
相关问题
Traceback (most recent call last): File "C:/Users/DELL/Desktop/python_flask-dc/python_flask/app.py", line 52, in <module> from python_flask.bpnn_wind import predictwind File "C:\Users\DELL\Desktop\python_flask-dc\python_flask\bpnn_wind.py", line 91 SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start byte
这个错误是因为Python无法解码bpnn_wind.py文件中的某个字符。这可能是由于文件中使用了不支持的字符编码格式导致的。你可以尝试用其他编码格式打开文件,或者尝试将文件中的特殊字符替换为Python可以识别的字符。另外,也可以在文件开头加入以下代码,指定文件编码格式为UTF-8:
```
# -*- coding: utf-8 -*-
```
这个代码应该放在文件的第一行,这样Python就会使用UTF-8编码格式来解析文件。
Traceback (most recent call last): File "C:/Users/DELL/Desktop/python_flask-dc/python_flask/bpnn_tf.py", line 131, in <module> a = round(a[0][0], 2) # 对浮点数进行四舍五入 TypeError: type numpy.ndarray doesn't define __round__ method
这个错误是因为 numpy.ndarray 类型没有定义 __round__ 方法,不能进行四舍五入操作。你可以尝试使用 numpy.around 函数来实现类似的功能,例如:
```
a = np.around(a[0][0], decimals=2)
```
这会将 a[0][0] 的值四舍五入到小数点后两位,并返回一个浮点数。如果你需要将其转换为字符串,可以使用 str 函数,例如:
```
result = str(a)
```
这会将浮点数 a 转换为字符串类型的 result。
阅读全文