我有这样一个数据帧:
id1 id2 c1 c2
1 a1 5 3
1 a1 6 2
1 a1 9 4
2 b1 5 2
2 b1 23 43
1 a1 34 32
3 3a 234 435
现在我想添加八个新列,如下所示:
c1_max c2_max c1_secondMax c2_secondMax c1_thirdMax c2_thirdMax c1_min c2_min
我想按id1
和id2
分组
我已经添加了c1_max c2_max c1_min c2_min
列,如下所示:
features = ["c1","c2"]
maxData = all_data.groupby(['id1','id2'])[features].agg('max')
all_data = pd.merge(all_data, maxData.reset_index(), suffixes=["", "_max"], how='left', on=['id1', 'id2'])
minData= all_data.groupby(['id1','id2'])[features].agg('min')
all_data = pd.merge(all_data, minData.reset_index(), suffixes=["", "_max"], how='left', on=['id1', 'id2'])
但是,如何添加_secondMax
和thirdMax
。基本上,它们是这些行中的第二个最大值和第三个最大值。你知道吗
让我们试试这个:
输出:
以同样的方式获得
maxdata
和mindata
,您可以通过以下操作获得nth
最小值和最大值:所以在这种情况下,你将得到c1的第二个最小值
其中
df.sort_values(['id1','id2','c1'])
将分别根据id1
、id2
和c1
对值进行排序,这相当于按id1
和id2
分组和排序c1
:相关问题 更多 >
编程相关推荐