簡體   English   中英

TypeError:使用 Pandas 解析 CSV 時無法理解數據類型

[英]TypeError: data type not understood while parsing CSV with Pandas

在使用 Pandas 解析 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)

這是控制台 output

               date      muscle side  MQ(0-100)  MQ(raw)   fat
0  12/16/2018 16:08      glutes    R       99.7      154   8.6
1  12/16/2018 16:08       total    R       81.8      129  17.0
2  12/16/2018 16:04      glutes    L       98.1      140  10.8
3  12/16/2018 16:03  upper_back    R       70.2      132  11.6
4  12/16/2018 16:02  upper_back    L       77.8      136  11.4
date          object
muscle        object
side          object
MQ(0-100)    float64
MQ(raw)        int64
fat          float64
dtype: object

運行完整代碼時出錯

/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

這是一個單行解決方案:

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

現在得到一個很好的結果:

date         datetime64[ns]
muscle               object
side                 object
MQ(0-100)           float64
MQ(raw)               int64
fat                 float64
dtype: object

“muscle”和“side”列是正確的 dtype。 Pandas 將字符串視為 object dtypes。 這可以在這里閱讀: pandas 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM