python / pandas, правильно реализующий df.loc с переменной - PullRequest
0 голосов
/ 17 мая 2018

В настоящее время у меня есть переменная с именем

Date: "2016-07-01"

и я пытаюсь сделать так, чтобы у меня в данный момент был фрейм данных с указанной даты. В настоящее время я использую метод:

given base df with many dates and prices at the time,

dfmain = df.loc[Date:]

Однако, когда я печатаю вывод, он фактически начинается с индекса 202:

Index    Date      Price  
202  2008-11-21    37.88
203  2008-11-28    42.70 
204  2008-12-05    48.28 
205  2008-12-12    51.34 
206  2008-12-19    51.30 
207  2008-12-26    51.78  #etc...

когда я изменил Date на что-то вроде 2076-01-02, он начинается с индекса 208. Мне было интересно, есть ли способ реализовать его, чтобы он брал полную дату и начинал с нее, вместо вычисления df.loc первые три числа даты и установка в качестве начального индекса.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

df.loc [] - это ссылка на ваш индекс, а ваш индекс не является вашим столбцом даты. Попробуйте:

df = df.set_index('Date')

Если вы не хотите изменять свой индекс, вы также можете сделать:

df[df['Date'] >= '20160701']]
0 голосов
/ 17 мая 2018

Я думаю, сначала нужно от set_index до DateTimeindex по столбцу Date для выбора по меткам DataFrame.loc:

print (df.index)
Int64Index([202, 203, 204, 205, 206, 207], dtype='int64', name='Index')

#if necessary convert to datetime
#df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')

print (df.index)
DatetimeIndex(['2008-11-21', '2008-11-28', '2008-12-05', '2008-12-12',
               '2008-12-19', '2008-12-26'],
              dtype='datetime64[ns]', name='Date', freq=None)

Date =  "2008-12-01"

dfmain = df.loc[Date:]
print (dfmain)
            Price
Date             
2008-12-05  48.28
2008-12-12  51.34
2008-12-19  51.30
2008-12-26  51.78

Другим решением должно быть использование boolean indexing или query:

Date =  "2008-12-01"

dfmain = df[df['Date'] >= Date]

#dfmain = df.query('Date >= @Date')
print (dfmain)
            Date  Price
Index                  
204   2008-12-05  48.28
205   2008-12-12  51.34
206   2008-12-19  51.30
207   2008-12-26  51.78
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...