在Python中格式化字典时出现“关键错误”提示

时间:2019-08-21 02:45:07

标签: python pandas

我有30个csv文件,其中每个文件都有自己的DataFrame(由于要求,我无法合并DataFrame)。我想要一个字典,其中的键是csv文件的名称,值是DataFrame本身。这就是我要的:

import pandas as pd
import glob
import os

files = glob.glob('data\*.csv')

roster = {os.path.basename(fp).split('.')[0] : pd.read_csv(fp) for fp in files}

CSV文件有一个名为“ Season”的列,其格式如下:“ 2018-19”,“ 2017-18”,并且这些值因文件而异。我只想获取1980年以后的行。在previous question的jazrael的帮助下,我能够使用他的建议。但是,我遇到了KeyError。据我了解,这意味着我使用了错误的列名或错误的键。但是,这两个都是正确的。这是我的朋友jazrael建议的:

dfs_dict = {k:v[v['Season'].str.extract('(\d{4})', expand=False).astype(float) > 1980] 
                 for k, v in dfs_dict.items()}

这是我的错误:

KeyError                                  Traceback (most recent call last)
C:\Anaconda\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2656             try:
-> 2657                 return self._engine.get_loc(key)
   2658             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: 'Season'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-2-8f59bae477f8> in <module>
      1 league = {k:v[v['Season'].str.extract('(\d{4})', expand=False).astype(float) > 1980] 
----> 2                  for k, v in league.items()}
      3 
      4 
      5 #BOS[BOS['Season'].str.split('-').str[0].astype(int) < 2017

<ipython-input-2-8f59bae477f8> in <dictcomp>(.0)
      1 league = {k:v[v['Season'].str.extract('(\d{4})', expand=False).astype(float) > 1980] 
----> 2                  for k, v in league.items()}
      3 
      4 
      5 #BOS[BOS['Season'].str.split('-').str[0].astype(int) < 2017

C:\Anaconda\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2925             if self.columns.nlevels > 1:
   2926                 return self._getitem_multilevel(key)
-> 2927             indexer = self.columns.get_loc(key)
   2928             if is_integer(indexer):
   2929                 indexer = [indexer]

C:\Anaconda\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2657                 return self._engine.get_loc(key)
   2658             except KeyError:
-> 2659                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2660         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2661         if indexer.ndim > 1 or indexer.size > 1:

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: 'Season'

我对Python还是很陌生,如果有人可以解释我做错了什么,请多多关照。

0 个答案:

没有答案