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

如何将整数按数值拆分为Pandas DataFrame的多行?

解决方案

你可以通过以下步骤实现需求,核心思路是先按整数列重复行,再根据组内序号判断第二整数列的取值:

  1. 按整数次数重复行:依据Integer_Column的数值,将每行重复对应次数
  2. 生成组内序号:对每个StringColumn分组,给组内每行分配从1开始的连续序号
  3. 转换整数列值:将第一列整数统一设为1;第二列整数根据序号与原Integer_Column2的阈值关系,设置为1或0

完整代码

import pandas as pd

# 初始化原始DataFrame
df = pd.DataFrame({'StringColumn': ['A', 'B', 'C'], 
                   'Integer_Column': [5,3,4],
                   'Integer_Column2': [3,2,1]})

# 步骤1:按Integer_Column的值重复每行
df_repeated = df.loc[df.index.repeat(df['Integer_Column'])].reset_index(drop=True)

# 步骤2:生成每个分组内的序号(从1开始)
df_repeated['seq'] = df_repeated.groupby('StringColumn').cumcount() + 1

# 步骤3:将第一列整数统一设为1
df_repeated['Integer_Column'] = 1

# 步骤4:根据序号与原阈值的关系,设置第二列整数的值
thresholds = df['Integer_Column2'].repeat(df['Integer_Column']).reset_index(drop=True)
df_repeated['Integer_Column2'] = (df_repeated['seq'] <= thresholds).astype(int)

# 整理结果:删除辅助列,重命名列名
df_result = df_repeated.drop('seq', axis=1).rename(columns={
    'StringColumn': 'String',
    'Integer_Column': 'Integer',
    'Integer_Column2': 'Integer'
})

print(df_result)

输出结果

运行代码后将得到目标表格:

StringIntegerInteger
A11
A11
A11
A10
A10
B11
B11
B10
C11
C10
C10
C10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:55:28