为什么在 Python Pandas 数据类型 float64 上出现错误?

我使用 Windows PC 上的 jupyter 笔记本。我读了一个数据帧,我调用 tran 如下


tran = pd.read_csv("https://raw.githubusercontent.com/m1ngle/TRCount/main/TRCountUS.csv")

当我查看整个数据框的数据类型时,它效果很好


tran.dtypes


FIPS             int64

State           object

YMTF             int64

MTFPer         float64

YFTM             int64

FTMPer         float64

YNB              int64

NBPer          float64

YTR              int64

YTRper         float64

NoTR             int64

NoTRPer        float64

DK               int64

DKPer          float64

DNAns            int64

DNAPer         float64

TotSurveyed      int64

StatePop         int64

TRPop            int64

dtype: object

当我尝试调用或使用任何 float64 列时,我收到错误


tran['MTFPer'].dtype

KeyError                                  Traceback (most recent call last)

~\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)

   2645             try:

-> 2646                 return self._engine.get_loc(key)

   2647             except KeyError:


pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()


pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()


pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()


pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()


KeyError: 'MTFPer'


During handling of the above exception, another exception occurred:


KeyError                                  Traceback (most recent call last)

<ipython-input-85-2bd9c012f223> in <module>

----> 1 tran['MTFPer'].dtype


~\anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)

   2798             if self.columns.nlevels > 1:

   2799                 return self._getitem_multilevel(key)

-> 2800             indexer = self.columns.get_loc(key)

   2801             if is_integer(indexer):

   2802                 indexer = [indexer]

当我使用任何 int64 数据类型时,不会发生此错误。


tran['YMTF'].dtype

dtype('int64')

谁能帮我吗?


开满天机
浏览 154回答 1
1回答

潇湘沐

在读取.csv文件时,pandas 还会读取列中的空白。当我tran[' MTFPer '].dtype代替 时tran['MTFPer'].dtype,pandas 给了我正确的答案。也许稍微清理一下数据本身,或者您可以像这样清理列名:tran.columns&nbsp;=&nbsp;[c.strip()&nbsp;for&nbsp;c&nbsp;in&nbsp;tran.columns]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python