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

如何在Pandas中按decimal列拆分并格式化数据表格?

按Decimal列拆分生成小数格式化表格的实现方法

假设你的原表格包含id、name、decimal三列(其中decimal是整数,代表要生成的小数位数),目标是将每行拆分为多行,每行对应一个符合指定位数的小数(比如decimal=2时生成0.01到0.99的所有两位小数),同时保留原行的id和name,以下是几种常用工具的实现方式:

方法1:Excel Power Query(高效批量处理)

这是最适合大量数据的方法:

  1. 选中你的数据表格,点击数据选项卡 → 从表格/区域,把数据导入Power Query编辑器。
  2. 选中decimal列,点击添加列 → 自定义列,输入公式生成对应小数序列:
    List.Numbers(0.01, Number.Power(10, [decimal])-1, 0.01^[decimal])
    
    公式说明:根据decimal的值,生成从0.01开始、步长为对应精度(比如decimal=2时步长0.01)的序列,总个数为10^decimal - 1(比如decimal=2时是99个)。
  3. 点击自定义列右侧的展开箭头,选择展开到新行,每个小数就会单独成一行。
  4. 点击关闭并上载,就能得到目标格式的表格。

方法2:Excel公式(适合小数据量)

如果不想用Power Query,可通过公式+填充实现:

  1. 先在辅助列(比如D列)计算每行需要生成的行数:=10^C2 - 1(C列是原decimal列)。
  2. 生成总序列:在空白单元格输入=SEQUENCE(SUM(D:D)),得到从1到总行数的序列。
  3. 匹配id和name:用XLOOKUP匹配对应行,比如id列公式:
    =XLOOKUP(ROW(A1), SCAN(0, D:D, LAMBDA(a,b,a+b)), A:A, , -1)
    
    name列同理,把公式里的A:A换成B:B。
  4. 生成小数:
    =ROUND(ROW(A1)/10^XLOOKUP(ROW(A1), SCAN(0, D:D, LAMBDA(a,b,a+b)), C:C, , -1), XLOOKUP(ROW(A1), SCAN(0, D:D, LAMBDA(a,b,a+b)), C:C, , -1))
    
    下拉填充所有公式即可。

方法3:Google Sheets一键生成

在Google Sheets中用数组公式快速实现:
假设原数据在A2:C区域(A=id,B=name,C=decimal),在空白单元格(比如E2)输入:

=FLATTEN(ARRAYFORMULA(IF(C2:C="",,MAP(A2:A,B2:B,C2:C,LAMBDA(id,name,d,{IFERROR(SEQUENCE(10^d-1,1,id,0)),IFERROR(SEQUENCE(10^d-1,1,name,0)),ROUND(SEQUENCE(10^d-1,1,0.01,0.01^d),d)}))))

回车后会自动生成所有拆分后的行,包含id、name和对应小数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:35:23