我有一个如下的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。
在这里,您去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] 删除。
我来说两句