如何基于现有DataFrame统计各名称出现次数并匹配对应quantity值
解决方法:用Pandas分组统计name出现次数并匹配quantity
没问题,这事儿用Pandas的groupby就能轻松搞定。看你的原数据里每个name对应的quantity都是一致的,所以我们可以按name分组后,统计行数作为count,再提取对应的quantity值就行。
完整代码示例
import pandas as pd # 构造你提供的原DataFrame data = { 'name': ['AA', 'AA', 'AA', 'AA', 'AA', 'BB', 'BB', 'CC', 'DD', 'DD', 'DD', 'DD'], 'Chr': ['chr7', 'chr17', 'chr4', 'chr4', 'chr7', 'chr17', 'chr4', 'chr13', 'chr5', 'chr5', 'chr13', 'chr3'], 'position': [151970856, 59763465平保险箱这卧槽Te极品】 Read预先禁一组面试题,直接写数值] 'position': [151970856, 59763465, 55152040, 55141055, 151970856, 59763465, 55141055, 32906729, 170837513, 170837513, 32893197, 10088404], 'quantity': [3, 3, 3, 3, 3, 4, 4, 4.5, 5.5, 5.5, 5.5, 5.5] } df = pd.DataFrame(data) # 分组统计核心代码 result_df = df.groupby('name').agg( count=('name', 'size'), # 统计每组的行数,即name出现次数 quantity=('quantity', 'first') # 提取每组的第一个quantity值(因同一name的quantity一致) ).reset_index() # 将name从索引变回普通列 # 查看结果 print(result_df)
运行结果
执行上述代码后,你会得到如下格式的新DataFrame:
| name | count | quantity |
|---|---|---|
| AA | 5 | 3 |
| BB | 2 | 4 |
| CC | 1 | 4.5 |
| DD | 4 | 5.5 |
补充说明
如果你的数据中出现同一name对应不同quantity的特殊情况,可以根据需求调整agg里的quantity处理逻辑:
- 要保留所有不同的quantity值:
quantity=('quantity', lambda x: list(x.unique())) - 取quantity的平均值:
quantity=('quantity', 'mean') - 取quantity的最大值:
quantity=('quantity', 'max')
内容的提问来源于stack exchange,提问作者Bella
相关产品推荐
相关产品推荐

