我有以下数据框
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 变量获取最大索引值的正确方法是什么,就像下面的数据框一样。
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')
输出:
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
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
你可以用这个命令来做到这一点
df["High_ValueIndexMax"] = df["高"].loc[df.groupby("FlgVela")["高"].transform("idxmax")].values