【问题标题】:TypeError: Column 'year_2021' has dtype object, cannot use method 'nlargest' with this dtype类型错误:列 'year_2021' 具有 dtype 对象,不能将方法 'nlargest' 用于此 dtype
【发布时间】:2021-05-28 12:09:50
【问题描述】:

我有一个 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

我该如何解决这个问题?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    在使用nlargest()之前,尽量保证astype(float)的列是float格式,如下:

    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】:

      对象类型不能有最大。所以尝试转换为 int 或 float

      dataframe = yearly_returns.astype('float').nlargest(5, "year_"+str(2021))
      

      dataframe = yearly_returns.astype('int').nlargest(5, "year_"+str(2021))
      

      【讨论】:

        猜你喜欢
        • 2022-01-25
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 2017-02-05
        • 2018-11-30
        • 2017-09-15
        • 2019-06-16
        • 2020-12-17
        相关资源
        最近更新 更多