2016-11-09 58 views
1

我有一个pandas DataFrame由3列,第一列的D型np.datetime64numpy的datetime64

import numpy as np 
import pandas as pd  
timeseries = np.arange(np.datetime64('20/11/2009'), np.datetime64('19/11/2010), np.timedelta64(1, 'h')) 
insolation =pd.DataFrame(columns=['datetime','GHI','DNI']) 
insolation['datetime'] = timeseries 

一个小时的时间序列如果我print(insolation)我得到这样的输出:

    datetime GHI DNI 
0 2009-11-20 00:00:00 NaN NaN 
1 2009-11-20 01:00:00 NaN NaN 
2 2009-11-20 02:00:00 NaN NaN 
...     ... ... ... 
8734 2010-11-18 22:00:00 NaN NaN 
8735 2010-11-18 23:00:00 NaN NaN 

所以远,那么好。但是,如果我用这个datetime64对象:

datetime=np.datetime64('2009-11-20 00:00:00') 

(这似乎在数据帧存在)来引用数据框:

insolation[datetime][GHI] =1.0 

我得到一个错误:

KeyError: numpy.datetime64('2009-11-20T00:00:00') 

全部错误信息如下:

Traceback (most recent call last): 
    File "C:\Users\z5044992\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\indexes\base.py", line 1945, in get_loc 
    return self._engine.get_loc(key) 
    File "pandas\index.pyx", line 137, in pandas.index.IndexEngine.get_loc (pandas\index.c:4154) 
    File "pandas\index.pyx", line 159, in pandas.index.IndexEngine.get_loc (pandas\index.c:4018) 
    File "pandas\hashtable.pyx", line 675, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12368) 
    File "pandas\hashtable.pyx", line 683, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12322) 
KeyError: numpy.datetime64('2009-11-20T00:00:00') 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:/PYTHONprojects/PY_EN_Models/Scripts/create_weatherfile.py", line 109, in <module> 
    main() 
    File "C:/PYTHONprojects/PY_EN_Models/Scripts/create_weatherfile.py", line 87, in main 
    insolation[datetime][GHI] = irradience_array[gridrow,gridcol] 
    File "C:\Users\z5044992\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\frame.py", line 1997, in __getitem__ 
    return self._getitem_column(key) 
    File "C:\Users\z5044992\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2004, in _getitem_column 
    return self._get_item_cache(key) 
    File "C:\Users\z5044992\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1350, in _get_item_cache 
    values = self._data.get(item) 
    File "C:\Users\z5044992\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\internals.py", line 3290, in get 
    loc = self.items.get_loc(item) 
    File "C:\Users\z5044992\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\indexes\base.py", line 1947, in get_loc 
    return self._engine.get_loc(self._maybe_cast_indexer(key)) 
    File "pandas\index.pyx", line 137, in pandas.index.IndexEngine.get_loc (pandas\index.c:4154) 
    File "pandas\index.pyx", line 159, in pandas.index.IndexEngine.get_loc (pandas\index.c:4018) 
    File "pandas\hashtable.pyx", line 675, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12368) 
    File "pandas\hashtable.pyx", line 683, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12322) 
KeyError: numpy.datetime64('2009-11-20T00:00:00') 

Process finished with exit code 1 

回答

2

使用loc

insolation.loc[insolation.datetime.eq(datetime), 'GHI'] = 1.0 

出了什么问题?

insolation[datetime] 

尝试获取由变量datetime定义的列。
提示:不使用与您的列名称相同的变量名称。

相关问题