【问题标题】:Groupby().tranform() PandasGroupby().transform() 熊猫
【发布时间】:2020-11-18 22:04:32
【问题描述】:

我创建了一个数据集,我想在其中找到最大销售额和人名

data={'Company':['GOG','GOG','FB','FB','LT','LT'],'Name':['A','B','C','D','E','F'],'Sales':[200,120,340,124,243,350]}

data_s=pd.DataFrame(data)

print(data_s)

将打印下面的DataFrame

Company     Name        Sales
0   GOG     A          200
1   GOG     B          120
2   FB      C          340
3   FB      D          124
4   LT      E          243
5   LT      F          350

s=data_s.groupby('Company')['Sales'].transform(max)==data_s['Sales']
data_s[s]

Company Name    Sales
0   GOG A   200
2   FB  C   340
5   LT  F   350

我的问题是如何应用 lambda 函数来解决这个问题,或者还有其他替代方法吗?

【问题讨论】:

  • 解决什么?你的尝试有什么问题?请描述情况并发布期望的结果。
  • 如前所述,我需要员工的姓名和他工作的公司,以及最高销售额。我已经用一种方法解决了这个问题,请问是否有另一种方法?

标签: python-3.x pandas dataframe pandas-groupby


【解决方案1】:

您可以使用idxmax 获取最大值的索引,并使用该索引查找您感兴趣的行:

index_of_highest_sale = data_s.groupby('Company')['Sales'].idxmax()
person_details = data_s.loc[index_of_highest_sale]

【讨论】:

  • 但这给了销售额最高的人,而不是每个公司销售额最高的人
  • 您也可以通过按公司分组来做到这一点(请参阅更新的答案)
猜你喜欢
  • 2018-06-02
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 2018-05-16
  • 2021-06-16
  • 2013-10-24
  • 2021-12-24
相关资源
最近更新 更多