python pandas - 在运行 idxmax/argmax 后获取列值

标签 python pandas pandas-groupby

我正在尝试通过一些数据找出哪一类产品的收入最高。

我可以通过运行获得收入最高的类别的实际总收入:

max_revenue_by_cat = summer_transactions.groupby('item_category_id')['total_sales'].sum().max()

但是我如何才能获得最大收入所属的类别 ID?即 total_sales

数量最多的 category_id

最佳答案

使用set_index + sum(level=0) + sort_values + iloc 索引第一项。

df

   item_category_id  total_sales
0                 1          100
1                 1           10
2                 0          200
3                 2           20
4                 1          300
5                 0          100
6                 1           30
7                 2          400

r = df.set_index('item_category_id')\
      .total_sales.sum(level=0)\
      .sort_values(ascending=False)\
      .iloc[[0]]

item_category_id
1    440
Name: total_sales, dtype: int64

如果你想把它作为一个迷你数据框,在结果上调用 reset_index -

r.reset_index()

   item_category_id  total_sales
0                 1          440

详情

df.set_index('item_category_id').total_sales.sum(level=0)

item_category_id
1    440
0    300
2    420
Name: total_sales, dtype: int64

这里,总和最大的类别是1。通常,对于少量组,sort_values 调用花费的时间可以忽略不计,因此这应该是非常高效的。

关于python pandas - 在运行 idxmax/argmax 后获取列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47870988/

相关文章:

python - 检查函数参数的最佳方法?

Python使用包含 '\'的字符串变量定义文件名

python - 如何生成根据另一个数据的数量重复一个数据的 DataFrame?

python - 如何找到数据框窗口最大值的源索引?

python - python中几天的累计总和

python - Pandas 根据行、列和日期过滤 DataFrame

python - 使用 Pyinstaller 2.0、PySide 1.1.2 绑定(bind)和 Qt 4.8 时如何在应用程序中包含图标

python - 生成权重和偏差的随机向量和矩阵

pandas - 如何从数据框和列中的列表中弹出行

python - 通过groupby删除异常值pandas?