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

Python Django, Pandas: ForeignKey, his attributes and calculation

美好的一天,

是否有任何解决方案可以在我的 models.py 中访问 ForeignKey 的属性并在数据帧中进行计算?

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    

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

id | object | amount

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

是否可以获取(通过外键)连接数据的其他属性并在数据框内进行计算(在本例中:价格 x 数量)?

可能的结果:

id   |   object   |   amount   |   price   |   calc

1    |   name_a   |   12       |   2       |   24
2    |   name_b   |   7        |   4       |   28
3    |   name_c   |   19       |   8       |   152

感谢您的帮助!

我想这可能对你有帮助

假设你有两个数据帧 即 df1 和 df2

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

其中包含以下数据

df1

      price
item        
item1     10
item2      5
item3      6

df2

       amount
item         
item1       1
item2       3

您可以使用 pandas 中的 .join 按索引连接两个数据框,如下所示。请注意 item 是索引

merged_df = df1.join(df2)

merged_df长得像

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

现在应用你的计算如下。它将在 priceamount 列之间进行乘法运算,并将其存储在 calc column

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

中找到更多信息

希望这能解决您的问题