我有数据,如下例所示,Sub是唯一的,但Que不是。 Cov是Sub和Que之间的关系。如果有多个Que与同一个Sub匹配,我想选择具有最大Cov的Que。
Ss示例S2与3 Que匹配:
dt = DataFrame([['s1', 'q1', 1], ['s2', 'q2', 1.5], ['s2', 'q3', 2.3], ['s2', 'q4', 2], ['s3', 'q5', 4]], columns = ['Sub', 'Que', 'Cov'])
dup_counts = dt.groupby(["Sub" ,"Que"]).Que.count().groupby(level='Sub').count()
print(dup_counts.head())
Sub
s1 1
s2 3
s3 1
dtype: int64
以下代码几乎完成了我想要的操作,它返回每个Sub的最大Cov。我还想知道与该Cov相关的Que。
dup_max = dt.groupby(["Sub","Que"]).Cov.max().groupby(level="Sub").max()
print(dup_max.head())
Sub
s1 1.0
s2 2.3
s3 4.0
dtype: float64
这就是我想要的。
Sub Que Cov
s1 q1 1.0
s2 q3 2.3
s3 q5 4.0
答案 0 :(得分:1)
idx = dt.groupby('Sub').Cov.idxmax()
dt.iloc[idx]
Out[483]:
Sub Que Cov
0 s1 q1 1.0
2 s2 q3 2.3
4 s3 q5 4.0