如何根据Count列数值对DataFrame按Group分组截取对应行数
实现方案
R 语言(dplyr 包)
使用dplyr的分组和切片逻辑即可直接实现,同一个分组内Count值统一,直接取组内第一个Count值作为保留行数即可:
library(dplyr) # 处理逻辑 res_df <- raw_df %>% group_by(Group) %>% slice_head(n = first(Count)) %>% ungroup()
如果要随机取指定数量行而非取前N行,可以把slice_head替换为slice_sample(n = first(Count))。
Python 语言(pandas 库)
用groupby配合自定义处理逻辑实现:
import pandas as pd # 方式1:自定义函数 def keep_group_n_rows(group): retain_num = group['Count'].iloc[0] return group.head(retain_num) res_df = raw_df.groupby('Group', group_keys=False).apply(keep_group_n_rows) # 方式2:lambda简写 res_df = raw_df.groupby('Group', group_keys=False).apply(lambda x: x.head(x['Count'].iloc[0]))
内容的提问来源于stack exchange,提问作者Clara Rodriguez
相关产品推荐
相关产品推荐

