Линейная регрессия на усеченном фрейме данных не работает - PullRequest
0 голосов
/ 19 июня 2019

У меня есть датафрейм, который я сгруппировал, а затем извлек наклон между значениями 2 столбцов. Код как ниже. grouped_full= data_train.groupby(['Cycle', 'Type']) slope_full = (grouped_full.apply(lambda x: linregress(x['Time'], x['Values']).slope)).reset_index(name='Slope')

Я получаю наклон в новом столбце под названием «Наклон». Теперь я пытаюсь сделать то же самое только для первых 1700 строк в каждом сгруппированном элементе. Чтобы получить 1700 строк, я использовал следующий код grouped_small = data_train.groupby(['Cycle', 'Type']).head(1700) Я напечатал и проверил, датафрейм хорош. Однако, когда я пытаюсь извлечь наклон на этом этапе, используя slope_small = (grouped_small.apply(lambda a: linregress(a['Time'], a['Values']).slope)).reset_index(name='Slope2'), я сталкиваюсь с ошибкой

KeyError: ('Time', 'occurred at index Cycle')

Это точно такой же код. Я не уверен, почему я сталкиваюсь с этой ошибкой. Что я должен сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 19 июня 2019

"grouped_full" - это pandas.core.groupby.generic.DataFrameGroupBy, поэтому команда apply будет работать с этим.grouped_small - это полный фрейм данных pandas.core.frame.DataFrame и apply не будет работать. Итак, я сделал следующее, и это работает grouped_small = data_train.groupby(['Cycle', 'Type']).head(1700) grouped_small2 = grouped_small.groupby(['Cycle', 'Type']) slope_small = (grouped_small2.apply(lambda x: linregress(x['Time'], x['Values']).slope)).reset_index(name='Slope_small')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...