DataFrame行索引生成问题:按规则递增至10000行时第6项异常
解决索引序列生成问题
你的索引序列规律是:从3开始,连续加8三次得到11、19、27,之后加11得到38,再重复连续加8三次得到46、54、62,接着加11得到73,以此循环直到索引不超过10000。
原代码的问题
你当前的代码逻辑错误在于:用固定步长8的range生成i,而非基于上一个索引的值进行累加。这导致当需要加11时,后续的i没有和上一个正确索引对齐,最终计算出的结果偏离预期。比如第6个元素,原代码会算出43,而正确值应该是38+8=46。
正确实现代码
基于“连续加8三次→加11→重复”的规律,直接从上一个索引值出发累加,代码如下:
df_length = 10000 index_list = [3] current_index = 3 # 记录连续加8的次数,初始已存在第一个元素,后续需完成3次加8后切换为加11 add_8_counter = 0 while True: if add_8_counter < 3: # 连续加8,直到完成3次 current_index += 8 add_8_counter += 1 else: # 完成3次加8后,加11并重置计数器 current_index += 11 add_8_counter = 0 # 索引超过DataFrame长度则停止 if current_index >= df_length: break index_list.append(current_index)
验证结果
生成的序列前几项为:[3, 11, 19, 27, 38, 46, 54, 62, 73, ...],完全符合你预期的规律,且会自动停止在不超过10000的最大索引处。
内容的提问来源于stack exchange,提问作者Davis Joseph
相关产品推荐
相关产品推荐

