根据与Pandas groupby对象不同的列的最大值获取列的值

维曼尤

我有一个如下的df:

   name  pid  cost   Date
0    a    1   800  1991-01-31
1    b    2   200  1991-01-31
2    c    3   300  1991-01-31
3    a    1   400  2001-01-31
4    b    4   500  2001-01-31
5    c    3   600  2001-01-31

我想maxCost根据最新 Date的(name,pid)对向此df添加新列因此,最终输出应如下所示:

   name  pid  cost   Date      maxCost
0    a    1   800  1991-01-31   400
1    b    2   200  1991-01-31   200
2    c    3   300  1991-01-31   600
3    a    1   400  2001-01-31   400
4    b    4   500  2001-01-31   500
5    c    3   600  2001-01-31   600

我使用创建了一个groupby对象

df.groupby(['name','pid']).Date.max().reset_index()

这给了我这样的数据框:

   name  pid    Date
0    a    1  2001-01-31
1    b    2  1991-01-31
2    b    4  2001-01-31
3    c    3  2001-01-31

这样可以为(名称,PID)对提供正确的日期,但是如何从“费用”列中提取值?

任何帮助将不胜感激!

注意:reset_index()只是这样,所以它在本文中显示得更好。

更新maxCost应该从最近的日期开始查看费用。将行索引:0的成本从100更新到800。

BEN_YO

在这里,您去sort_values之前transform first

df=df.sort_values(['Date','cost'])
df['maxCost']=df.groupby(['name','pid'])['cost'].transform('last')
df=df.sort_index()
df
Out[775]: 
  name  pid  cost       Date  maxCost
0    a    1   800 1991-01-31      400
1    b    2   200 1991-01-31      200
2    c    3   300 1991-01-31      600
3    a    1   400 2001-01-31      400
4    b    4   500 2001-01-31      500
5    c    3   600 2001-01-31      600

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

pandas df获取与groupby的最大值关联的列的值

如何根据pandas.groupby().max()中一列的最大值获取整行?

根据列最大值获取记录

Pandas:根据其他列值获取列的最大值

Python Pandas根据列的最大值删除列

如何根据php中列的最大值从数组对象中获取数组对象

Python:Pandas:如何根据Groupby在另一列中查找最大值

Python Pandas groupby和分类列的最大值

Pandas 数据透视表或 groupby 列的绝对最大值

如何按列获取 Pandas Dataframe 最大值以及每列最大值的 ID

pandas groupby agg 从一列获取最大值并从另一列带来值

Pandas Groupby:如何获取不同的列值

根据列最大值获取记录 - 在 PySpark 中

Oracle SQL - 根据列获取最大值

根据另一列的最大值获取值

根据条件获取沿列轴的最大值索引

熊猫数据框根据条件用不同的列值替换列的最大值

根据 groupby 场景熊猫中的最大值计数替换列值

DAX。根据另一列的最大值获取一列的值

如何根据SQL中列之间的最大值从表中获取相应的列值

Pandas Groupby列的最后N行的最小值和最大值

从pandas的数据框中获取第二列的最大值,其中列1 =指定的值

根据不同的第一列查找所有列的最大值

根据其他列中的最大值填充列(python pandas)

Pandas groupby 2 列,选择第 3 列的最大值

根据另一列分组的另一列的最大值获取值

根据列中的 ID 值选择最大值的函数

根据列值提取滚动最大值

如何根据每列的最大值选择列?