如何在Pandas DataFrame中每N行后递增Level列的值
如何在Pandas DataFrame中每N行递增特定列的值
你可以利用Pandas的矢量化操作高效实现需求,完全不需要写循环,这种方法在处理1000行甚至更大数据集时,性能远优于循环写法。
核心思路
通过对DataFrame索引做整数除法,将数据按指定行数(示例为5行、实际需求为100行)分组,每组对应一个递增基准值,再加上初始值即可得到Level列。
示例实现(按5行分组,初始值6)
import pandas as pd # 原始数据 data = {'displayName':['Kelsier', 'Val', 'Elend', 'Dock','Club','Renox','Sher','Breeze','Saze','Reen','Mist','Atium','Iron','Copper','Tin'], 'pic' : ["av10", "av12", "av14", "av15", "av0", "av1", "av18", "av8", "av16", "av22", "av40", "av24", "av17", "av2", "av7"]} df = pd.DataFrame(data) # 生成Level列:索引整除5得到组号,加初始值6 df['level'] = (df.index // 5) + 6 print(df)
运行结果与你期望的完全一致:
displayName pic level 0 Kelsier av10 6 1 Val av12 6 2 Elend av14 6 3 Dock av15 6 4 Club av0 6 5 Renox av1 7 6 Sher av18 7 7 Breeze av8 7 8 Saze av16 7 9 Reen av22 7 10 Mist av40 8 11 Atium av24 8 12 Iron av17 8 13 Copper av2 8 14 Tin av7 8
适配实际需求(1000行,每100行递增,初始值6)
只需将代码中的5替换为100:
df['level'] = (df.index // 100) + 6
为什么不用循环?
Pandas的矢量化操作基于底层C实现,处理批量数据时比Python循环快几个数量级,面对1000行数据集时,这种写法既简洁又高效。
内容的提问来源于stack exchange,提问作者Arkam
相关产品推荐
相关产品推荐

