如何为每个ID统计观测行数并新增count列?
为每个ID统计行数并创建新列
原始数据表格:
| ID | value |
|---|---|
| 1 | 4 |
| 1 | 5 |
| 3 | 4 |
| 2 | 10 |
需求:添加名为count的列,用于显示每个ID对应的观测数量,转换后目标表格如下:
| id | value | count |
|---|---|---|
| 1 | 4 | 2 |
| 1 | 5 | 2 |
| 3 | 4 | 1 |
| 2 | 10 | 1 |
常见实现方法
Python Pandas 实现
通过groupby结合transform可以高效生成目标列:
import pandas as pd # 构造原始数据 df = pd.DataFrame({ 'ID': [1, 1, 3, 2], 'value': [4, 5, 4, 10] }) # 按ID分组统计行数并添加为新列 df['count'] = df.groupby('ID')['ID'].transform('count') # 重命名ID列为id(匹配目标格式) df.rename(columns={'ID': 'id'}, inplace=True) print(df)
SQL 实现
利用窗口函数COUNT() OVER (PARTITION BY)直接查询生成目标列:
SELECT ID AS id, value, COUNT(*) OVER (PARTITION BY ID) AS count FROM your_table_name;
内容的提问来源于stack exchange,提问作者j5934
相关产品推荐
相关产品推荐

