2017-06-20 11 views
2

"15022016"のように "%d%m%Y"の形式のデータ列があります。 "2016-02-15"のように "%Y-%m-%d"に変換する必要があります。KeyError:データの時刻形式を変更するときの0

データフレームは911462個の行を有し、コードは以下の通りである:

for i in range(0,911462): 
    df['Date'][i]=datetime.datetime.strftime(datetime.datetime.strptime(df['Date'][i],"%d%m%Y"),"%Y-%m-%d") 

そしてIは、以下のようにエラーと会った:

Traceback (most recent call last): 
    File "C:\Users\liangfan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\indexes\base.py", line 2393, in get_loc 
    return self._engine.get_loc(key) 
    File "pandas\_libs\index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5239) 
    File "pandas\_libs\index.pyx", line 154, in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5085) 
    File "pandas\_libs\hashtable_class_helper.pxi", line 1207, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20405) 
    File "pandas\_libs\hashtable_class_helper.pxi", line 1215, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20359) 
KeyError: 0 
During handling of the above exception, another exception occurred: 
Traceback (most recent call last): 
    File "<input>", line 2, in <module> 
    File "C:\Users\liangfan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 2062, in __getitem__ 
    return self._getitem_column(key) 
    File "C:\Users\liangfan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 2074, in _getitem_column 
    result = result[key] 
    File "C:\Users\liangfan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 2062, in __getitem__ 
    return self._getitem_column(key) 
    File "C:\Users\liangfan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 2069, in _getitem_column 
    return self._get_item_cache(key) 
    File "C:\Users\liangfan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 1534, in _get_item_cache 
    values = self._data.get(item) 
    File "C:\Users\liangfan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 3590, in get 
    loc = self.items.get_loc(item) 
    File "C:\Users\liangfan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\indexes\base.py", line 2395, in get_loc 
    return self._engine.get_loc(self._maybe_cast_indexer(key)) 
    File "pandas\_libs\index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5239) 
    File "pandas\_libs\index.pyx", line 154, in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5085) 
    File "pandas\_libs\hashtable_class_helper.pxi", line 1207, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20405) 
    File "pandas\_libs\hashtable_class_helper.pxi", line 1215, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20359) 
KeyError: 0 

Iは、Excelにおける生データを確認し、それらはすべての罰金ので、生のデータに問題はありません。 キーエラーが0であることは間違いなく有線です。何が問題なのか、どのように対処するのかは全く分かりません。

ご協力いただきありがとうございます。 :)あなたは、パラメータformatpandas.to_datetimeが必要

答えて

2

df = pd.DataFrame({'Date':[15022016,15022016]}) 
print (df) 
     Date 
0 15022016 
1 15022016 

df['Date'] = pd.to_datetime(df['Date'], format='%d%m%Y') 
print (df) 
     Date 
0 2016-02-15 
1 2016-02-15 

print (df['Date'].dtype) 
datetime64[ns] 
+0

はありがとうございました!しかし、私はまだ、なぜ以前のエラーが発生するのだろう、ちょうど興味があるのだろうかと思っています。 –

+0

わかりませんが、インデックス値は0ではないようです。 – jezrael

関連する問題