【问题标题】:Django - Queryset Dataframe - turn decimals into floatsDjango - Queryset Dataframe - 将小数转换为浮点数
【发布时间】:2019-08-16 03:11:21
【问题描述】:

我正在将查询集转换为数据框。 问题是项目的类型是 'Decimals' (例如: Decimal('-1800000.00') )。我希望这些变成普通的浮点数,这样我就可以用它们进行计算。

我该怎么做?

谢谢大家!!

dataframe = pd.DataFrame(list(Item.objects.filter(item__slug=fundslug).values('date','amount')))

【问题讨论】:

    标签: python django list django-queryset


    【解决方案1】:

    你想要.astype("float")

    作为

    dataframe = pd.DataFrame([Item.objects.filter(
                                       item__slug=fundslug).values(
                                           'date','amount')]).astype("float")
    

    dataframe = pd.DataFrame([Item.objects.filter(
                                       item__slug=fundslug).values(
                                           'date','amount').astype("float")])
    

    无论哪种方式,它都应该做同样的事情。

    Pandas 默认将其值保存为 numpy 数组,因此除非.values('date','amount') 以某种方式从方法调用中指定您想要的确切值,否则您可能不需要它。

    另外,如果您只返回日期和金额,最好将其声明为 DateTime 而不是浮点数,因为它可能会在以后节省您的计算时间。我还建议将日期设为index

    【讨论】:

    • hi Puhtooi :) 好的,谢谢,但我得到以下错误:: TypeError: float() argument must be a string or a number, not 'dict' ?我该如何解决这个问题
    • Item.objects.filter(item__slug=fundslug) 必须返回一个字典。所以你需要一种方法来索引那个字典。我会考虑将其分解为多行代码,或者真正深入研究该方法调用的作用。你的解决方案看起来很优雅,看起来它所做的比一个班轮更复杂。
    猜你喜欢
    • 2012-07-26
    • 2013-05-19
    • 2021-06-18
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多