代码之家  ›  专栏  ›  技术社区  ›  AntonioGrissini

如何将Pandas中的两列分组并将另外两列相乘为一个新列?

  •  1
  • AntonioGrissini  · 技术社区  · 2 年前

    我正在将以下.xlsx文件导入到数据帧中。

    dfMenu = pd.read_excel("/Users/FoodTrucks.xlsx")
    
    价格 FoodTruck FoodTruck_ID
    3 10 汉堡 1.
    1.20 50 Tacos 2.
    0.60 30 Tacos 2.
    1.12 40 饮料 4.
    2 20 汉堡 1.

    我的目标是在一个名为“收入”的新列中显示每辆食品车的总收入及其ID和名称。

    我目前正在尝试使用下面的代码,但我正在努力将列“Price”和“Quantity”相乘为一个新列,并以一种优雅的方式将“FoodTruck”和“FoodTrusk_ID”分组。

    df = df.groupby((['FoodTruck', 'FoodTruck_ID'])(df['Revenue'] = df['Price'] * q9['Quantity']))
    

    我遇到语法错误 “SyntaxError:无法在此处为下标赋值。也许您的意思是'=='而不是'='?”

    解决这个问题最优雅的方法是什么?

    0 回复  |  直到 2 年前
        1
  •  1
  •   mitoRibo    2 年前

    在分组之前,首先计算价格*数量会更容易:

    import pandas as pd
    
    df = pd.DataFrame({
        'Price': [3.0, 1.2, 0.6, 1.12, 2.0],
        'Quantity': [10, 50, 30, 40, 20],
        'FoodTruck': ['Burgers', 'Tacos', 'Tacos', 'Drinks', 'Burgers'],
        'FoodTruck_ID': [1, 2, 2, 4, 1]
    })
    
    df['Revenue'] = df['Price']*df['Quantity']
    
    df.groupby(['FoodTruck','FoodTruck_ID'])['Revenue'].sum()
    

    输出

    FoodTruck  FoodTruck_ID
    Burgers    1               70.0
    Drinks     4               44.8
    Tacos      2               78.0
    Name: Revenue, dtype: float64