1

キーエラーが発生し続けるのはなぜですか?

[編集] データは次のとおりです。

GEO,LAT,LON
AALBORG   DENMARK,57.0482206,9.9193939
AARHUS   DENMARK,56.1496278,10.2134046
ABBOTSFORD BC  CANADA,49.0519047,-122.3290473
ABEOKUTA   NIGERIA,7.161,3.348
ABERDEEN   SCOTLAND,57.1452452,-2.0913745

[編集終了] インデックスで行を見つけることはできませんが、明らかにそこにあります:

geocache = pd.read_csv('geolog.csv',index_col=['GEO']) # index_col=['GEO']
geocache.head()

ショー

                      LAT           LON
GEO     
AALBORG DENMARK       57.048221     9.919394
AARHUS DENMARK        56.149628    10.213405
ABBOTSFORD BC CANADA  49.051905  -122.329047
ABEOKUTA NIGERIA       7.161000     3.348000
ABERDEEN SCOTLAND     57.145245    -2.091374

それで、私はそれをテストします:

x = 'AARHUS DENMARK'
print(x)
geocache[x]

そして、これは私が得るものです:

オーフス デンマーク


() 内の KeyError トレースバック (最新の呼び出しが最後) 2 x = u'AARHUS DENMARK' 3 print(x) ----> 4 geocache[x]

C:\Users\g\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   1785             return self._getitem_multilevel(key)
   1786         else:
-> 1787             return self._getitem_column(key)
   1788 
   1789     def _getitem_column(self, key):

C:\Users\g\Anaconda3\lib\site-packages\pandas\core\frame.py in _getitem_column(self, key)
   1792         # get column
   1793         if self.columns.is_unique:
-> 1794             return self._get_item_cache(key)
   1795 
   1796         # duplicate columns & possible reduce dimensionaility

C:\Users\g\Anaconda3\lib\site-packages\pandas\core\generic.py in _get_item_cache(self, item)
   1077         res = cache.get(item)
   1078         if res is None:
-> 1079             values = self._data.get(item)
   1080             res = self._box_item_values(item, values)
   1081             cache[item] = res

C:\Users\g\Anaconda3\lib\site-packages\pandas\core\internals.py in get(self, item, fastpath)
   2841 
   2842             if not isnull(item):
-> 2843                 loc = self.items.get_loc(item)
   2844             else:
   2845                 indexer = np.arange(len(self.items))[isnull(self.items)]

C:\Users\g\Anaconda3\lib\site-packages\pandas\core\index.py in get_loc(self, key, method)
   1435         """
   1436         if method is None:
-> 1437             return self._engine.get_loc(_values_from_object(key))
   1438 
   1439         indexer = self.get_indexer([key], method=method)

pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:3824)()

pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:3704)()

pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12349)()

pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12300)()

KeyError: 'AARHUS DENMARK'

余分なスペースや目に見えない文字はありません。文字列の割り当ての前に r と u を入れてみましたが、動作は変わりませんでした。

わかりました、何が欠けていますか?

4

1 に答える 1

1

sep(セパレータ)引数をデフォルトに渡さなかったためread_csv、カンマで区切られています。csv にはカンマの後にスペース/タブが含まれていたため、これらはデータの一部として扱われるため、インデックス データには埋め込みスペースが含まれています。

したがって、追加のパラメーターをに渡す必要がありますread_csv

pd.read_csv('geolog.csv',index_col=['GEO'], sep=',\s+', engine='python')

arg は、コンマのsep前にオプションの 1 つ以上のスペースがあるコンマを探すことを意味します。Cengine='python'エンジンはセパレータの正規表現を受け入れないため、パスします。

于 2015-04-12T18:06:13.027 に答える