Python: TypeError при разбиении Train-Test кадра данных - PullRequest
0 голосов
/ 05 марта 2020

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

          date  datedelta
0   2012-03-30  0
1   2012-03-30  0
2   2012-03-31  1
3   2012-04-19  19
4   2012-04-20  1
... ... ...
240 2019-11-08  11
241 2019-11-14  6
242 2019-11-14  0
243 2019-11-24  1
244 2019-12-07  13

245 rows × 2 columns

Я хочу разделить его на обучающие и тестовые фреймы данных, и это то, что я сделал.

tr_start,tr_end = '2012-03-30','2016-01-28'
te_start,te_end = '2017-01-29','2019-12-07'
tra = x['date'][tr_start:tr_end].dropna()
tes = x['date'][te_start:te_end].dropna()

Я не могу понять что я делаю не так Я получаю эту ошибку после перезапуска ядра в jupyter сегодня, и я уверен, что не было никаких ошибок, когда я впервые написал код !! : @, пожалуйста, помогите мне.

 TypeError: cannot do slice indexing on <class 'pandas.core.indexes.range.RangeIndex'> with these indexers [2012-03-30] of <class 'str'>

Получение этой ошибки в третьей строке.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Попробуйте:

df = df.set_index('date')
df = df.sort_values('date')
# # Slice the Data
tr_start,tr_end = '2012-03-30','2016-01-28'
te_start,te_end = '2017-01-29','2019-12-07'
tra = df[df['date'].between(tr_start,tr_end)].dropna()
tes = df[df['date'].between(te_start,te_end)].dropna()
1 голос
/ 05 марта 2020

Я думаю, вам нужно сначала DatetimeIndex, а затем выбрать:

x = x.set_index('Date')

tr_start,tr_end = '2012-03-30','2016-01-28'
te_start,te_end = '2017-01-29','2019-12-07'
tra = x[tr_start:tr_end].dropna()
tes = x[te_start:te_end].dropna()

Или:

tra = x.loc[tr_start:tr_end].dropna()
tes = x.loc[te_start:te_end].dropna()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...