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

如何将Pandas DataFrame中带小数的指定列值拆分为多行?

Pandas DataFrame指定列按数值拆分多行解决方案

你可以通过 numpy + Pandas 向量化操作实现需求,全程无需显式循环,代码如下:

import pandas as pd
import numpy as np

# 构造示例数据
sample = pd.DataFrame({'split_me': [1.5, 2, 4, 3.2], 'copy_me': ['A', 'B', 'C', 'D']})

# 1. 计算每行需要重复的次数
sample['repeat_cnt'] = np.ceil(sample['split_me']).astype(int)

# 2. 按重复次数展开行
expanded = sample.loc[sample.index.repeat(sample['repeat_cnt'])].reset_index(drop=True)

# 3. 按原行分组计算组内行序号
expanded['group_seq'] = expanded.groupby(expanded.index).cumcount()
# 保留原始split_me值用于计算
expanded['original_split'] = expanded['split_me']

# 4. 按规则赋值新的split_me值
int_part = expanded['original_split'].astype(int)
mask = expanded['group_seq'] < int_part
expanded['split_me'] = np.where(mask, 1, expanded['original_split'] - int_part)

# 5. 清理冗余列得到最终结果
out = expanded.drop(['repeat_cnt', 'group_seq', 'original_split'], axis=1)

运行后得到的out结果和你给出的期望输出完全一致。

方案说明

  • 核心逻辑通过np.ceil计算重复行数,解决小数也需要多拆一行的问题
  • 分组行号+向量化条件赋值替代循环,处理百万级行数据也能保持高效
  • 如果你的业务场景中split_me存在0、负数等特殊值,提前做过滤或自定义规则处理即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:45:04