これは非常に奇妙なエラーです。明らかに理由がないため、パンダDataFrame groupby
を実行するとKeyError
を取得しました。提案されているようdf.columns = df.columns.map(str.strip)
を使用して、KeyError from pandas DataFrame groupby
df = pd.read_csv('test.csv')
df.tail(5)
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 165 entries, 0 to 164
Data columns (total 3 columns):
Id 165 non-null object
Time 165 non-null object
Val 165 non-null float64
dtypes: float64(1), object(2)
memory usage: 3.9+ KB
df.columns
Index([u'Id', u'Time', u'Val'], dtype='object')
df.groupby(['Id'])
KeyErrorTraceback (most recent call last)
<ipython-input-24-bba5c2dc5f75> in <module>()
----> 1 df.groupby(['Id'])
/usr/local/lib/python2.7/dist-packages/pandas/core/generic.pyc in groupby(self, by, axis, level, as_index, sort, group_keys, squeeze, **kwargs)
3776 return groupby(self, by=by, axis=axis, level=level, as_index=as_index,
3777 sort=sort, group_keys=group_keys, squeeze=squeeze,
-> 3778 **kwargs)
...
/usr/local/lib/python2.7/dist-packages/pandas/core/internals.pyc in get(self, item, fastpath)
3288
3289 if not isnull(item):
-> 3290 loc = self.items.get_loc(item)
3291 else:
3292 indexer = np.arange(len(self.items))[isnull(self.items)]
/usr/local/lib/python2.7/dist-packages/pandas/indexes/base.pyc in get_loc(self, key, method, tolerance)
1945 return self._engine.get_loc(key)
1946 except KeyError:
-> 1947 return self._engine.get_loc(self._maybe_cast_indexer(key))
1948
1949 indexer = self.get_indexer([key], method=method, tolerance=tolerance)
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4154)()
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4018)()
pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12368)()
pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12322)()
KeyError: 'Id'
注いずれかが異なることはありません - 私はまだ上記とまったく同じdf.columns
からの出力とエラーになっています:どこにでも存在する場合
df.columns = df.columns.map(str.strip)
df.columns
Out[38]:
Index([u'Id', u'Time', u'Val'], dtype='object')
をその"test.csv"はWindowsベースで、SQL Server SSMSから出力されます。問題はファイルの形式であることがほぼ確実であるため、この "test.csv"を投稿できます。これは非常に重要です。私がオープンしたときには、&がNotepad ++を使って正確に内容をコピーしていました。新しく保存されたファイルにこのような問題はありません。 Linuxでfile test.csv
を使用して
は示しています
0000000 ef bb bf 49 64 2c 54 69 - 6d 65 2c 56 61 6c 0d 0a Id,Time,Val..
0000020 54 35 31 31 35 2c 30 30 - 3a 30 30 3a 30 30 2c 32 T5115,00:00:00,2
0000040 30 2e 38 31 39 0d 0a 54 - 35 31 31 35 2c 30 30 3a 0.819..T5115,00:
0000060 30 30 3a 30 33 2c 31 36 - 2e 39 32 36 0d 0a 54 35 00:03,16.926..T5
0000100 31 31 35 2c 30 30 3a 30 - 30 3a 30 38 2c 31 31 2e 115,00:00:08,11.
0000120 33 34 33 0d 0a 54 35 31 - 31 35 2c 30 30 3a 30 30 343..T5115,00:00
0000140 3a 31 37 2c 36 2e 39 37 - 35 0d 0a 54 35 31 31 35 :17,6.975..T5115
0000160 2c 30 30 3a 30 30 3a 32 - 39 2c 31 33 2e 35 35 33 ,00:00:29,13.553
0000200 0d 0a 54 35 31 31 35 2c - 30 30 3a 30 30 3a 33 35 ..T5115,00:00:35
それを解決する方法任意のアイデア:ここ
test.csv: UTF-8 Unicode (with BOM) text, with CRLF line terminators
は、ファイルからトップいくつかのバイトがありますか?どうも。
あなたは 'df.columnsの=のDFを試すことができます。 columns.map(str.strip) ' – piRSquared
@ piRSquared、ありがとうございます。 OPが更新されました。 – xpt