#python #pandas #dataframe
Вопрос:
У меня есть фрейм данных Python, который выглядит так:
year_2021 year_2020 year_2019 year_2018 year_2017 year_2016 year_2015
A 15.930541127542696 0.12659425148389353 37.859222886444584 0.7502044402344105 29.867551207184103 -2.62377211249297 -0.20709969350376067
AA 67.78493901734711 0.8676822974374843 7.609706605792995 -0.4184107467700045 -18.02591304685353 -1.2791578388405083 -51.821640736128046
AAL 61.46728433834196 -4.05834067688741 -45.78892961483622 1.4295670957092637 -11.699505205100467 1.1522856582117076 -39.40366183570082
и я пытаюсь получить наибольшее число n в год:
dataframe = yearly_returns.nlargest(5, "year_" str(2021))
что приводит меня к ошибке TypeError: Column 'year_2021' has dtype object, cannot use method 'nlargest' with this dtype
Как я могу это исправить?
Ответ №1:
Перед использованием убедитесь , что столбцы имеют формат с плавающей astype(float)
nlargest()
точкой, как показано ниже:
dataframe = yearly_returns.astype(float).nlargest(5, "year_" str(2021))
Если вам нужны только данные из соответствующего столбца, а не все столбцы из всего фрейма данных, вам следует рассмотреть возможность использования Series.nlargest()
вместо DataFrame.nlargest()
, следующим образом:
series = yearly_returns["year_" str(2021)].astype(float).nlargest(5)
Результатом будет серия соответствующего столбца вместо всего фрейма данных с данными за несущественные годы.
Ответ №2:
Тип объекта не может иметь nlargest. поэтому попробуйте преобразовать в int или float
dataframe = yearly_returns.astype('float').nlargest(5, "year_" str(2021))
или
dataframe = yearly_returns.astype('int').nlargest(5, "year_" str(2021))