如果我的数据框如下所示,并且我希望文件名相同的最大值为“ f0max”。
f0max file maxtime
0 9 1 1
1 8 1 2
2 7 1 3
3 6 2 4
4 5 2 5
5 4 2 6
6 3 3 7
7 2 3 8
8 1 3 9
结果将是
f0max file maxtime
0 9 1 1
3 6 2 4
6 3 3 7
因此结果将是(在实际数据中,f0max和maxtime没有相同的值)
这在大熊猫中可能吗?
答案 0 :(得分:1)
返回与每个文件中的max f0max对应的整行
df.sort_values('f0max').groupby('file').tail(1)
f0max file maxtime
6 3 3 7
3 6 2 4
0 9 1 1
答案 1 :(得分:1)
您可以对GroupBy
+ transform
使用布尔索引。请注意,这将按组包括个重复的最大值。
df = df[df['f0max'] == df.groupby('file')['f0max'].transform('max')]
或者,您也可以由石斑鱼进行排序,然后删除重复项。如果按组存在重复的最大值,则仅保留一个:
df = df.sort_values('f0max', ascending=False)\
.drop_duplicates('file')
结果:
print(df)
f0max file maxtime
0 9 1 1
3 6 2 4
6 3 3 7
答案 2 :(得分:0)