繁体   English   中英

熊猫-分组依据,计数值和删除均等事件

[英]pandas - groupby, count values and remove equal occurrences

这个问题和以下数据帧df开始:

U,C,G
111,ar,1
112,es,1
112,es,1
112,es,2
113,en,2
113,en,3
113,en,3
114,ca,4
112,es,1
112,es,1
112,es,1
115,it,1
115,it,2
115,it,3

我以这种方式对值进行分组和计数:

grouped = df.groupby(['U','G'])['C'].value_counts()

然后保持每个组的最大值:

mask = grouped.groupby(level='U').apply(lambda g: g == g[g.idxmax()])
grouped = grouped[mask]

获得:

U    G    
111  1  ar    1
112  1  es    5
113  3  en    2
114  4  ca    1
115  1  it    1
     2  it    1
     3  it    1

现在,一些U在值上具有多个相等的出现。 我的目标是仅保留U行且仅出现一次,而丢弃其他行。 在此示例中,结果数据帧将丢弃115组。

>>> grouped[ grouped.groupby(level='U').transform('count') == 1 ]

U    G    
111  1  ar    1
112  1  es    5
113  3  en    2
114  4  ca    1

也可以做:

>>> grouped[ grouped.groupby(level='U').rank(method='max') == 1 ]

暂无
暂无

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

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