我在python中有一个数据帧(很多行,2列)。我想根据第2列中的最大值在第1列中使用唯一值修改DF(如果有帮助,第2列按升序排序)。我可以写一个循环,但更喜欢一个或两个行解决方案。感谢。
实施例
ID Value
100 11
100 14
100 16
200 10
200 20
200 30
300 45
400 0
400 25
期望的结果
100 16
200 30
300 45
400 25
答案 0 :(得分:7)
您希望在'a'列上groupby
,然后使用idxmax
获取最大值的索引,并使用这些索引来索引orig df:
In [12]:
df.loc[df.groupby('a')['b'].idxmax()]
Out[12]:
a b
2 100 16
5 200 30
6 300 45
8 400 25
答案 1 :(得分:2)
如果您不需要原始索引但只需要ID
的最高值,则可以使用groupby
和max
:
print(df.groupby("ID").max())
Value
ID
100 16
200 30
300 45
400 25
答案 2 :(得分:0)
输入数据
date = {'ID':[100,100,100,200,200,200,300,400,400],'Value':[11,14,16,10,20,30,45,0,25]}
df= pd.DataFrame.from_dict(dane)
例如:
ID Value
0 100 11
1 100 14
2 100 16
3 200 10
4 200 20
5 200 30
6 300 45
7 400 0
8 400 25
和解决方案:
df = df.groupby('ID')[['Value']].max().reset_index()
输出:
ID Value
0 100 16
1 200 30
2 300 45
3 400 25