我正在运行以下python代码:它一直工作良好,直到今天
import pandas as pd
import dbfread
data = dbfread.DBF(data.DBF, load = True)
df = pd.DataFrame(data)
我收到下面的错误信息:不确定出了什么问题
ValueError Traceback (most recent call last)
~\Anaconda3\lib\site-packages\dbfread\field_parser.py in parseN(self, field, data)
157 try:
--> 158 return int(data)
159 except ValueError:
ValueError: invalid literal for int() with base 10: b'*********'
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-9-d243d1e0719c> in <module>
----> 1 data = dbfread.DBF('LNMSTR.DBF', load = True)
2 df = pd.DataFrame(data)
~\Anaconda3\lib\site-packages\dbfread\dbf.py in __init__(self, filename, encoding, ignorecase, lowernames, parserclass, recfactory, load, raw, ignore_missing_memofile)
131
132 if load:
--> 133 self.load()
134
135 @property
~\Anaconda3\lib\site-packages\dbfread\dbf.py in load(self)
166 """
167 if not self.loaded:
--> 168 self._records = list(self._iter_records(b' '))
169 self._deleted = list(self._iter_records(b'*'))
170
~\Anaconda3\lib\site-packages\dbfread\dbf.py in _iter_records(self, record_type)
306 for field in self.fields]
307 else:
--> 308 items = [(field.name,
309 parse(field, read(field.length))) \
310 for field in self.fields]
~\Anaconda3\lib\site-packages\dbfread\dbf.py in <listcomp>(.0)
307 else:
308 items = [(field.name,
--> 309 parse(field, read(field.length))) \
310 for field in self.fields]
311
~\Anaconda3\lib\site-packages\dbfread\field_parser.py in parse(self, field, data)
73 raise ValueError('Unknown field type: {!r}'.format(field.type))
74 else:
---> 75 return func(field, data)
76
77 def parse0(self, field, data):
~\Anaconda3\lib\site-packages\dbfread\field_parser.py in parseN(self, field, data)
162 else:
163 # Account for , in numeric fields
--> 164 return float(data.replace(b',', b'.'))
165
166 def parseO(self, field, data):
ValueError: could not convert string to float: b'*********'
如果有人能帮我理解并解决这个问题,我将不胜感激。这是我的DBF数据库的问题还是我的代码的问题
更新:我可以在家里的电脑上运行相同的代码而不会出错。但它无法通过工作的电脑。你认为它可能与数据库本身无关吗?真奇怪
签出How do I convert a .dbf file into a Pandas DataFrame?以获取将
dbf
表转换为DataFrame
表的函数为了回答您的问题,为该记录的该列存储的字节是一组星号(
*
),它们显然不是数字。有些程序,如FoxPro,在无法存储实际值时会存储星号在那种情况下,我的^{} library 将返回
None
从文档中,由于您使用pandas.DataFrame导入数据,文档向我显示您使用的是“DataType,expression”参数。这意味着,当您传入另一个数据点时,您导入的数据可能被读取为整数。如果您正在读取的数据集具有混合数据类型(即,您正在导入的一些数据是int和一些float,这可能会导致问题)
在错误的底部,您将看到
ValueError: could not convert string to float: b'*********'
,这可能是因为您试图导入一个字符串来代替浮点数(在本例中,它看起来就像多个星号的字符串:可能是一个列标题分隔符)。在尝试将数据字符串加载到DataFrame之前,可能会将其从数据字符串中删除,并查看其是否有效(在将data
变量加载到DataFrame函数之前,通过打印它来检查这一点)您可以在此处阅读更多信息: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dtypes.html#pandas.DataFrame.dtypes
相关问题 更多 >
编程相关推荐