Python中如何基于国家列生成重复序列,实现按国家每4天分组处理
Python Pandas 实现按国家分组每4行生成同一序号的方法
实现代码
用pandas的分组+行号计算即可实现和R代码等效的效果,操作如下:
首先确保你的数据已经加载为pandas的DataFrame,然后执行:
import pandas as pd # 第一步:先按国家+日期排序,保证时序正确,避免原数据顺序混乱导致序号出错 df = df.sort_values(by=['Country', 'Date'], ignore_index=True) # 第二步:按国家分组生成Every_4列 df['Every_4'] = df.groupby('Country').cumcount() // 4 + 1
逻辑说明
groupby('Country'):和R中group_by功能一致,保证每个国家的序号独立生成,互不干扰cumcount():为每个分组内的行生成从0开始的连续行号//4:整数除法,每4个连续行号会得到同一个整数值(0、1、2、3除以4都得0,4、5、6、7除以4都得1,以此类推)+1:让最终序号从1开始计数,匹配需求
效果验证
每个国家8天数据的场景下,最终生成的Every_4列效果如下:
| Country | Date | ValueA | Every_4 |
|---|---|---|---|
| FRA | 第1天 | xxx | 1 |
| FRA | 第2天 | xxx | 1 |
| FRA | 第3天 | xxx | 1 |
| FRA | 第4天 | xxx | 1 |
| FRA | 第5天 | xxx | 2 |
| FRA | 第6天 | xxx | 2 |
| FRA | 第7天 | xxx | 2 |
| FRA | 第8天 | xxx | 2 |
| USA | 第1天 | xxx | 1 |
| ... | ... | ... | ... |
完全支持后续按国家+Every_4字段做分组统计。
内容的提问来源于stack exchange,提问作者Isadora Tessler
相关产品推荐
相关产品推荐

