You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataFrame中为整数行生成递增序列列并跳过小数行

解决方案

你可以通过以下步骤实现需求:

  • 先判断B列的数值是否为整数,生成布尔掩码
  • 基于掩码生成递增序号,非整数位置填充为空值

完整代码示例

import pandas as pd

# 构造你的示例DataFrame
df = pd.DataFrame({
    'A': ['AA'] * 5,
    'B': [101, 102, 103.5, 104, 105]
})

# 1. 生成判断B列是否为整数的掩码
is_integer_mask = df['B'].apply(lambda x: x.is_integer())

# 2. 生成C列:仅整数行递增,小数行留空
df['C'] = is_integer_mask.cumsum().where(is_integer_mask, '')

# 查看结果
print(df)

输出结果

A      B  C
0  AA  101.0  1
1  AA  102.0  2
2  AA  103.5   
3  AA  104.0  3
4  AA  105.0  4

代码说明

  • df['B'].apply(lambda x: x.is_integer()):逐个检查B列的数值是否为整数,返回布尔序列(True对应整数行,False对应小数行)
  • is_integer_mask.cumsum():对布尔序列累加,True会被视作1累加,False视作0,从而得到连续递增的序号
  • .where(is_integer_mask, ''):仅保留布尔序列为True的位置的序号值,False的位置替换为空字符串,满足你的需求

你原有代码的问题

  • 直接用range(1, len(df))会给所有行赋值,无法跳过小数行
  • 代码中的df['order']和detailed_category_id属于笔误,应该对应df['B']和新增的C列

内容的提问来源于stack exchange,提问作者ImNotSureAboutStats

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 05:25:24