我有一个pandas
DataFrame,并且已经从中成功采样了一行,但是问题之一是它只是返回了另一个DataFrame。我需要读取返回的行并获取该行特定元素的值。
我的DataFrame
如下:
Date Open High Low Close Adj Close Volume
0 1993-01-29 43.968700 43.968700 43.750000 43.937500 26.836645 1003200
1 1993-02-01 43.968700 44.250000 43.968700 44.250000 27.027504 480500
2 1993-02-02 44.218700 44.375000 44.125000 44.343700 27.084740 201300
3 1993-02-03 44.406200 44.843700 44.375000 44.812500 27.371080 529400
4 1993-02-04 44.968700 45.093700 44.468700 45.000000 27.485609 531500
我可以使用以下行进行采样:
start_state = self.market_data.iloc[:-self._num_trading_days_in_episode].sample(1)
最终看起来像这样:
Date Open High Low Close Adj Close Volume
5299 2014-02-13 180.839996 183.199997 180.830002 183.009995 165.017517 100542200
现在,我需要弄清楚如何从该行读取Open
的值。
答案 0 :(得分:3)
使用:
start_state = self.market_data.iloc[:-self._num_trading_days_in_episode].sample(1)
首先可以通过标签DataFrame.loc
进行选择,并获得索引的第一个值:
open = start_state.loc[start_state.index[0], 'Open']
#faster alternative
#open = start_state.at[start_state.index[0], 'Open']
或按DataFrame.iloc
和Index.get_loc
的位置:
pos = market_data.columns.get_loc('Open')
open = start_state.iloc[0, pos]
#faster alternative
#open = start_state.iat[0, pos]
或通过索引在numpy数组中选择第一个值
open = start_state['Open'].values[0]
#pandas 0.24+
#open = start_state['Open'].to_numpy()[0]
或使用Series.item
将一项Series
转换为标量:
open = start_state['Open'].item()
答案 1 :(得分:1)
这简直可以归结为
self.market_data.Open.iloc[:-self._num_trading_days_in_episode].sample(1).iloc[0]
答案 2 :(得分:1)
一旦采样,您就可以调用所需的列。使用loc(标签)或iloc(索引)
start_state = self.market_data.iloc[:-self._num_trading_days_in_episode].sample(1)
start_state.loc[:]['Open']