[英]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.