Получить значения столбца на основе другого столбца, используя python - PullRequest
0 голосов
/ 09 октября 2018

Как получить значения столбцов, когда даты находятся между некоторыми датами, например, 2015-01-01 и 2015-03-01, или создать новый DataFrame всех столбцов для дат между 2015-01-01 и 2015-03-01

Это мой текущий код:

 from datetime import date
 from nsepy import get_history
 sbin = get_history(symbol='SBIN',
                       start=date(2015,1,1),
                       end=date(2015,1,10))

Это входные данные:

Symbol Series  Prev Close    Open    High     Low   Last   Close  \
Date
2015-01-01   SBIN     EQ      311.85  312.45  315.00  310.70  314.0  314.00
2015-01-02   SBIN     EQ      314.00  314.35  318.30  314.35  315.6  315.25
2015-01-05   SBIN     EQ      315.25  316.25  316.80  312.10  312.8  312.75
2015-01-06   SBIN     EQ      312.75  310.00  311.10  298.70  299.9  299.90
2015-01-07   SBIN     EQ      299.90  300.00  302.55  295.15  301.4  300.15

У меня есть DataFarme, который имеет данные в течение многих лет, и мне довольно часто нужночтобы построить маленькие образцы этого (различные образцы, основанные на датах), и мне понадобится функция для разделения моего dataFrame на основе некоторых дат.например, новый dataFrame с теми же столбцами, но только для этих дат 2015-01-01 -2015-03-01

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Не уверен, что я полностью понимаю ваш вопрос, но вот как я его интерпретировал:

Сценарий 1: вы просто хотите получить строк вашего фрейма данных, столбец даты которого находится в определенном диапазоне,Вы можете сделать это, используя pandas df.loc следующим образом ...

#Create a dataframe similar to yours
d = pd.DataFrame({'date': [datetime.date(2015,01,01), datetime.date(2015,01,02), datetime.date(2015,01,05), datetime.date(2015,01,06), datetime.date(2015, 01, 07)], 'open': [1, 2, 3, 4, 5]})

new_df = d.loc[(d['date'] >= datetime.date(2015,01,01)) & (d['date'] < datetime.date(2015,01,05))]

Возвращает строки, даты которых лежат между 2015-01-01 и 2015-01-05 (не включая 05).

Сценарий 2: вы хотите получить значения определенного столбца на основе вышеуказанного условия даты.Вы можете сделать это следующим образом ...

another_df = d.loc[(d['date'] >= datetime.date(2015,01,01)) & (d['date'] < datetime.date(2015,01,05)), 'open']

Мы просто указываем имя столбца, из которого мы хотим получить информацию, исходя из условия даты, в данном случае «открытого» столбца.

0 голосов
/ 09 октября 2018

Вы можете использовать сравнения для дат, как и для всего остального

# This will be true for every row that is true for both of these comparisons
idx = (sbin.index >= date(2015,1,1)) * (sbin.index <= date(2015,3,1))

sbin.iloc[idx].loc[:, ('Open', 'Close')]
new_sbin = sbin.iloc[idx]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...