繁体   English   中英

熊猫groupby Aggregation,如何选择输出列。

[英]Pandas groupby Aggregation, how to choose output columns.

我有数据,如下面的示例所示,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

另请参阅此类似问题

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM