Как я могу получить значение из одной ячейки после выборки строки из DataFrame pandas? - PullRequest
2 голосов
/ 30 марта 2019

У меня есть pandas DataFrame, и я успешно выбрал строку из него, но одна из проблем заключается в том, что он просто возвращает другой DataFrame.Мне нужно прочитать возвращенную строку и получить значение определенного элемента этой строки.

My 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 из этой строки.

Ответы [ 3 ]

3 голосов
/ 30 марта 2019

Использование:

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]

Или выберите в массиве numy первое значение с помощью индексации:

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 голос
/ 30 марта 2019

После того, как вы сделаете выборку, вы можете просто позвонить в нужную колонку. Либо с помощью loc (метка), либо с помощью iloc (индекс)

start_state = self.market_data.iloc[:-self._num_trading_days_in_episode].sample(1)

start_state.loc[:]['Open']
1 голос
/ 30 марта 2019

Это просто сводится к

self.market_data.Open.iloc[:-self._num_trading_days_in_episode].sample(1).iloc[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...