"Date" 列无法被 df_dates = df.loc[:,'Date'] 读取(数据来自雅虎财经)
"Date" column cannot be read by df_dates = df.loc[:,'Date'] (Data coming from yahoo Fin)
我目前正在从 Yahoo Finance 获取数据,出于我的代码目的,我需要定位日期和打开变量。
df_dates = df.loc[:,'Date'] # Get all of the rows from the Date column
df_open = df.loc[:,'Open'] #Get all of the rows from the Open column
然而,据我所知,日期看起来不像一个列,但我们可以看到有一个名为 "Date"
的列
我正在像这样从雅虎获取更新;
df = pdr.get_data_yahoo("AMD", start ='2019-10-01')
在我执行之后;
df_dates = df.loc[:,'Date'] # Get all of the rows from the Date column
df_open = df.loc[:,'Open'] #Get all of the rows from the Open column
这是我得到的错误。
--------------------------------------------------------------------------
KeyError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2896 try:
-> 2897 return self._engine.get_loc(key)
2898 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: 'Date'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
8 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2897 return self._engine.get_loc(key)
2898 except KeyError:
-> 2899 return self._engine.get_loc(self._maybe_cast_indexer(key))
2900 indexer = self.get_indexer([key], method=method, tolerance=tolerance)
2901 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: 'Date'
如何定位 "Date" 列?
最佳,
那是因为 Date
是数据帧的索引,而不是在列中。使用 df.index
.
访问它
此外,您可以执行 df.reset_index()
然后访问它。
所以你的代码:
df = pdr.get_data_yahoo("AMD", start ='2019-10-01').reset_index()
df_dates = df.loc[:,'Date'] # Get all of the rows from the Date column
df_open = df.loc[:,'Open'] #Get all of the rows from the Open column
from pandas_datareader import data as pdr
df = pdr.get_data_yahoo("AMD", start ='2019-10-01')
正在检查列和索引:
df.columns
输出:
Index(['High', 'Low', 'Open', 'Close', 'Volume', 'Adj Close'], dtype='object')
df.index
输出
DatetimeIndex(['2019-10-01', '2019-10-02', '2019-10-03', '2019-10-04',
'2019-10-07', '2019-10-08', '2019-10-09', '2019-10-10',
'2019-10-11', '2019-10-14', '2019-10-15', '2019-10-16',
'2019-10-17', '2019-10-18', '2019-10-21', '2019-10-22',
'2019-10-23', '2019-10-24', '2019-10-25', '2019-10-28',
'2019-10-29', '2019-10-30', '2019-10-31', '2019-11-01',
'2019-11-04', '2019-11-05', '2019-11-06', '2019-11-07',
'2019-11-08'],
dtype='datetime64[ns]', name='Date', freq=None)
如您所见,Date
属于索引,因此您不能通过标签 select 它。直接在读取数据框上使用reset_index可能不方便,因为其余的columns
不再有Date
索引。使用 Index.to_frame
and then DataFrame.reset_index
df_Open=df[['Open']] #this returns a DataFrame, you don't need loc
df_dates=df.index.to_frame().reset_index(drop=True)
print(df_dates)
Date
0 2019-10-01
1 2019-10-02
2 2019-10-03
3 2019-10-04
4 2019-10-07
5 2019-10-08
6 2019-10-09
7 2019-10-10
8 2019-10-11
9 2019-10-14
10 2019-10-15
11 2019-10-16
12 2019-10-17
13 2019-10-18
14 2019-10-21
15 2019-10-22
16 2019-10-23
17 2019-10-24
18 2019-10-25
19 2019-10-28
20 2019-10-29
21 2019-10-30
22 2019-10-31
23 2019-11-01
24 2019-11-04
25 2019-11-05
26 2019-11-06
27 2019-11-07
28 2019-11-08
我目前正在从 Yahoo Finance 获取数据,出于我的代码目的,我需要定位日期和打开变量。
df_dates = df.loc[:,'Date'] # Get all of the rows from the Date column
df_open = df.loc[:,'Open'] #Get all of the rows from the Open column
然而,据我所知,日期看起来不像一个列,但我们可以看到有一个名为 "Date"
的列我正在像这样从雅虎获取更新;
df = pdr.get_data_yahoo("AMD", start ='2019-10-01')
在我执行之后;
df_dates = df.loc[:,'Date'] # Get all of the rows from the Date column
df_open = df.loc[:,'Open'] #Get all of the rows from the Open column
这是我得到的错误。
--------------------------------------------------------------------------
KeyError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2896 try:
-> 2897 return self._engine.get_loc(key)
2898 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: 'Date'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
8 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2897 return self._engine.get_loc(key)
2898 except KeyError:
-> 2899 return self._engine.get_loc(self._maybe_cast_indexer(key))
2900 indexer = self.get_indexer([key], method=method, tolerance=tolerance)
2901 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: 'Date'
如何定位 "Date" 列?
最佳,
那是因为 Date
是数据帧的索引,而不是在列中。使用 df.index
.
此外,您可以执行 df.reset_index()
然后访问它。
所以你的代码:
df = pdr.get_data_yahoo("AMD", start ='2019-10-01').reset_index()
df_dates = df.loc[:,'Date'] # Get all of the rows from the Date column
df_open = df.loc[:,'Open'] #Get all of the rows from the Open column
from pandas_datareader import data as pdr
df = pdr.get_data_yahoo("AMD", start ='2019-10-01')
正在检查列和索引:
df.columns
输出:
Index(['High', 'Low', 'Open', 'Close', 'Volume', 'Adj Close'], dtype='object')
df.index
输出
DatetimeIndex(['2019-10-01', '2019-10-02', '2019-10-03', '2019-10-04',
'2019-10-07', '2019-10-08', '2019-10-09', '2019-10-10',
'2019-10-11', '2019-10-14', '2019-10-15', '2019-10-16',
'2019-10-17', '2019-10-18', '2019-10-21', '2019-10-22',
'2019-10-23', '2019-10-24', '2019-10-25', '2019-10-28',
'2019-10-29', '2019-10-30', '2019-10-31', '2019-11-01',
'2019-11-04', '2019-11-05', '2019-11-06', '2019-11-07',
'2019-11-08'],
dtype='datetime64[ns]', name='Date', freq=None)
如您所见,Date
属于索引,因此您不能通过标签 select 它。直接在读取数据框上使用reset_index可能不方便,因为其余的columns
不再有Date
索引。使用 Index.to_frame
and then DataFrame.reset_index
df_Open=df[['Open']] #this returns a DataFrame, you don't need loc
df_dates=df.index.to_frame().reset_index(drop=True)
print(df_dates)
Date
0 2019-10-01
1 2019-10-02
2 2019-10-03
3 2019-10-04
4 2019-10-07
5 2019-10-08
6 2019-10-09
7 2019-10-10
8 2019-10-11
9 2019-10-14
10 2019-10-15
11 2019-10-16
12 2019-10-17
13 2019-10-18
14 2019-10-21
15 2019-10-22
16 2019-10-23
17 2019-10-24
18 2019-10-25
19 2019-10-28
20 2019-10-29
21 2019-10-30
22 2019-10-31
23 2019-11-01
24 2019-11-04
25 2019-11-05
26 2019-11-06
27 2019-11-07
28 2019-11-08