获取某列最大值对应的类别名称
Get the name of the category corresponding to the maximum value of a column
我有一个 pandas 数据框,其中包含足球队、足球运动员和本赛季的上场分钟数。
Team
Player
Minutes played
1
a
2
1
b
10
1
c
0
2
a
28
2
b
50
2
e
7
3
c
200
3
p
10
通过做:
df['count_max'] = df.groupby(['Team'])['Minutes played'].transform(max)
df
我得到一个新列,其中包含每支球队的最大上场时间
Team
Player
Minutes played
Count_max
1
a
2
10
1
b
10
10
1
c
0
10
2
a
28
50
2
b
50
50
2
e
7
50
3
c
200
200
3
p
10
200
但是我不想显示这些信息,而是显示与玩家对应的字母(b 代表 1,b 代表 2,c 代表 3)。
您知道我怎样才能更新我的代码吗?
我的预期输出是:
Team
Player
Minutes played
Count_max
1
a
2
b
1
b
10
b
1
c
0
b
2
a
28
b
2
b
50
b
2
e
7
b
3
c
200
c
3
p
10
c
您可以在 transform
中使用 idxmax
并将索引映射到 Player
列。
df['count_max'] = df.groupby('Team')['Minutes played'].transform('idxmax').map(df['Player'])
print(df)
Team Player Minutes played count_max
0 1 a 2 b
1 1 b 10 b
2 1 c 0 b
3 2 a 28 b
4 2 b 50 b
5 2 e 7 b
6 3 c 200 c
7 3 p 10 c
我有一个 pandas 数据框,其中包含足球队、足球运动员和本赛季的上场分钟数。
Team | Player | Minutes played |
---|---|---|
1 | a | 2 |
1 | b | 10 |
1 | c | 0 |
2 | a | 28 |
2 | b | 50 |
2 | e | 7 |
3 | c | 200 |
3 | p | 10 |
通过做:
df['count_max'] = df.groupby(['Team'])['Minutes played'].transform(max)
df
我得到一个新列,其中包含每支球队的最大上场时间
Team | Player | Minutes played | Count_max |
---|---|---|---|
1 | a | 2 | 10 |
1 | b | 10 | 10 |
1 | c | 0 | 10 |
2 | a | 28 | 50 |
2 | b | 50 | 50 |
2 | e | 7 | 50 |
3 | c | 200 | 200 |
3 | p | 10 | 200 |
但是我不想显示这些信息,而是显示与玩家对应的字母(b 代表 1,b 代表 2,c 代表 3)。 您知道我怎样才能更新我的代码吗?
我的预期输出是:
Team | Player | Minutes played | Count_max |
---|---|---|---|
1 | a | 2 | b |
1 | b | 10 | b |
1 | c | 0 | b |
2 | a | 28 | b |
2 | b | 50 | b |
2 | e | 7 | b |
3 | c | 200 | c |
3 | p | 10 | c |
您可以在 transform
中使用 idxmax
并将索引映射到 Player
列。
df['count_max'] = df.groupby('Team')['Minutes played'].transform('idxmax').map(df['Player'])
print(df)
Team Player Minutes played count_max
0 1 a 2 b
1 1 b 10 b
2 1 c 0 b
3 2 a 28 b
4 2 b 50 b
5 2 e 7 b
6 3 c 200 c
7 3 p 10 c