类型错误:用Pandas解析CSV时无法理解数据类型

2024-05-18 15:47:46 发布

您现在位置:Python中文网/ 问答频道 /正文

当用panda解析CSV文件时,默认情况下,包含datetime的列被指定为类型object。在

如何确保第一列具有在本例中指定的正确类型?在

import pandas as pd
import datetime as datetime

data = pd.read_csv("scans.csv")

# dtypes = {
#     'date': datetime,
#     'muscle': str,
#     'side': str,
#     'MQ(0-100)': float,
#     'MQ(raw)': int,
#     'fat': float
# }
# data = pd.read_csv("scans.csv", dtype=dtypes)

print(data.head())
print(data.dtypes)

这是控制台输出

^{pr2}$

运行完整代码时出错

/Users/Developer/PycharmProjects/Sculpt/venv/bin/python /Users/Developer/PycharmProjects/Sculpt/script.py
Traceback (most recent call last):
  File "/Users/Developer/PycharmProjects/Sculpt/venv/lib/python3.8/site-packages/pandas/core/dtypes/common.py", line 2050, in pandas_dtype
    npdtype = np.dtype(dtype)
TypeError: data type not understood

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/Developer/PycharmProjects/Sculpt/script.py", line 18, in <module>
    data = pd.read_csv("scans.csv", dtype=dtypes)
  File "/Users/Developer/PycharmProjects/Sculpt/venv/lib/python3.8/site-packages/pandas/io/parsers.py", line 685, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/Users/Developer/PycharmProjects/Sculpt/venv/lib/python3.8/site-packages/pandas/io/parsers.py", line 457, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "/Users/Developer/PycharmProjects/Sculpt/venv/lib/python3.8/site-packages/pandas/io/parsers.py", line 895, in __init__
    self._make_engine(self.engine)
  File "/Users/Developer/PycharmProjects/Sculpt/venv/lib/python3.8/site-packages/pandas/io/parsers.py", line 1135, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "/Users/Developer/PycharmProjects/Sculpt/venv/lib/python3.8/site-packages/pandas/io/parsers.py", line 1917, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas/_libs/parsers.pyx", line 490, in pandas._libs.parsers.TextReader.__cinit__
  File "/Users/Developer/PycharmProjects/Sculpt/venv/lib/python3.8/site-packages/pandas/core/dtypes/common.py", line 2054, in pandas_dtype
    raise TypeError("data type not understood")
TypeError: data type not understood

Tags: inpydeveloperpandasdatavenvlibpackages
2条回答

这里有一个单一的解决方案:

data = pd.read_csv("scans.csv", parse_dates=['date'])

现在得到了一个好结果:

^{pr2}$

“muscle”和“side”列是正确的数据类型。Pandas将字符串视为对象数据类型。这里可以读到:pandas documentation

相关问题 更多 >

    热门问题