如何为整个DataFrame添加行计数?附现有分组统计实现
为DataFrame添加行计数的实用方法
看起来你已经搞定了按subreddit分组统计body列行数的操作,现在想要给整个原始DataFrame添加行计数?这里有几种贴合不同需求的实现方式:
一、添加全局行序号(从1开始的连续计数)
如果需要给每一行一个全局唯一的序号,直接生成计数序列赋值给新列即可:
# 生成从1到DataFrame总行数的序列,作为行计数列 df['row_count'] = range(1, len(df) + 1)
要是你的DataFrame索引不是连续整数,也可以先重置索引再生成:
# 重置索引(丢弃原索引),让索引从0开始 df = df.reset_index(drop=True) # 基于索引生成从1开始的行计数 df['row_count'] = df.index + 1
二、添加分组内的行计数
如果你的需求是在每个subreddit分组内部给行编号(比如每个小组内从1开始计数),可以用groupby配合cumcount():
# 每个subreddit分组内的行计数,默认从0开始,+1后变为从1开始 df['group_row_count'] = df.groupby('subreddit').cumcount() + 1
三、快速获取整个DataFrame的总行数
要是你只是想统计整个DataFrame一共有多少行,不用新增列,直接用这两个方法就能得到:
# 方法1:用len()获取行数 total_rows = len(df) # 方法2:用shape属性,shape[0]代表行数,shape[1]是列数 total_rows = df.shape[0]
举个直观的例子
假设你的原始DataFrame是这样的:
| subreddit | body |
|---|---|
| 0xProject | post content 1 |
| 0xProject | post content 2 |
| 100sexiest | post content 3 |
用第一种方法添加全局行计数后,结果会是:
| subreddit | body | row_count |
|---|---|---|
| 0xProject | post content 1 | 1 |
| 0xProject | post content 2 | 2 |
| 100sexiest | post content 3 | 3 |
用第二种方法添加分组内计数后,结果会是:
| subreddit | body | group_row_count |
|---|---|---|
| 0xProject | post content 1 | 1 |
| 0xProject | post content 2 | 2 |
| 100sexiest | post content 3 | 1 |
内容的提问来源于stack exchange,提问作者Parseltongue
相关产品推荐
相关产品推荐

