[英]Pandas Groupby with idxmax and transform to get the value of the largest index of each group
我有以下 dataframe
High FlgVela
0 177.73 1
1 178.48 2
2 182.10 2
3 182.48 3
4 173.66 4
5 174.40 5
6 172.34 6
7 172.87 6
8 176.36 6
根据 FlgVela 变量获取最大索引值的正确方法是什么,就像下面的 dataframe 一样。
High FlgVela High_ValueIndexMax
0 177.73 1 177.73
1 178.48 2 182.10
2 182.10 2 182.10
3 182.48 3 182.48
4 173.66 4 173.66
5 174.40 5 174.40
6 172.34 6 176.36
7 172.87 6 176.36
8 176.36 6 176.36
我尝试了以下逻辑,但它返回索引,预期结果是索引行的值。
df['High_ValueIndexMax'] = df.groupby(['FlgVela'])['High'].transform('idxmax')
尝试:
df['High_ValueIndexMax'] = df.groupby(['FlgVela'])['High'].transform('max')
OUTPUT:
High FlgVela High_ValueIndexMax
0 177.73 1 177.73
1 178.48 2 182.10
2 182.10 2 182.10
3 182.48 3 182.48
4 173.66 4 173.66
5 174.40 5 174.40
6 172.34 6 176.36
7 172.87 6 176.36
8 176.36 6 176.36
如果您想要每个组中与idxmax()
相关的整行:
>>> df.loc[ df.groupby('FlgVela').idxmax()['High'] ]
High FlgVela
0 177.73 1
2 182.10 2
3 182.48 3
4 173.66 4
5 174.40 5
8 176.36 6
另一种方式:
idx=df.groupby(['FlgVela'])['High'].transform('idxmax').values
最后:
df['High_ValueIndexMax']=df.loc[idx,'High'].values
Output 的df
:
High FlgVela High_ValueIndexMax
0 177.73 1 177.73
1 178.48 2 182.10
2 182.10 2 182.10
3 182.48 3 182.48
4 173.66 4 173.66
5 174.40 5 174.40
6 172.34 6 176.36
7 172.87 6 176.36
8 176.36 6 176.36
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.