Python Django,Pandas:ForeignKey,他的属性和计算

问题描述

美好的一天,

有什么解决方案可以访问我的models.py内部的ForeignKey属性,也可以在数据框内部进行计算?

<%= form.submit "Create",class: 'btn btn-primary' %>

比方说现有对象看起来像这样:

class Object(models.Model):
    name = models.Charfield(max_length=100,null=False,blank=False)
    price = models.Integerfield(default=0)

class Amounts(models.Model):
    object = models.ForeignKey(Object,on_delete=models.CASCADE)
    amount = models.Integerfield(default=0)

现在,我得到了一个看起来像这样的数据框:

id   |   name   |   price

1    |   name_a |   2
2    |   name_b |   4
3    |   name_c |   8    

是否可以获取(通过外键)连接的数据的其他属性,还可以在数据框内进行计算(在这种情况下,价格为数量x)?

可能的结果:

id | object | amount

1  | name_a | 12
2  | name_b | 7
3  | name_c | 19

感谢您的所有帮助!

解决方法

我认为这可能对您有帮助

假设您有两个数据框 即df1和df2

df1 = pd.DataFrame([["item1",10],["item2",5],["item3",6]],columns=["item","price"])
df2 = pd.DataFrame([["item1",1],3]],"amount"])

由以下数据组成

df1

      price
item        
item1     10
item2      5
item3      6

df2

       amount
item         
item1       1
item2       3

您可以通过在熊猫中使用.join来按索引将两个数据帧连接起来,如下所示。请注意,item是索引

merged_df = df1.join(df2)

merged_df看起来

       price  amount
item                
item1     10     1.0
item2      5     3.0
item3      6     NaN

现在按照以下方法进行计算。它将在 price 列和 amount 列之间进行乘法,并将其存储在 calc

merged_df = merged_df["price"] * merged_df["amount"]

然后merged_df

       price  amount  calc
item                      
item1     10     1.0  10.0
item2      5     3.0  15.0
item3      6     NaN   NaN

您可以从pandas.DataFrame.join

中找到更多信息。

我希望这能解决您的问题