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

如何将正负整数拆分为Pandas DataFrame的多行?

实现DataFrame的行重复与值转换

核心思路

根据Integer_Column的绝对值确定每行需要重复的次数,同时将该列的值替换为与原数符号一致的±1。

完整代码示例

import pandas as pd
import numpy as np

# 原DataFrame
df = pd.DataFrame({'String_Column': ['A', 'B', 'C'],
                   'String_Column_2': ['X', 'Y', 'Z'],
                   'Integer_Column': [1, -2, 3]})

# 1. 计算每行的重复次数(取Integer_Column的绝对值)
df['repeat_times'] = df['Integer_Column'].abs()

# 2. 按次数重复行
df_expanded = df.loc[df.index.repeat(df['repeat_times'])]

# 3. 将Integer_Column转换为±1(保留原符号)
df_expanded['Integer_Column'] = np.sign(df_expanded['Integer_Column'])

# 4. 移除临时的repeat_times列(可选)
df_expanded = df_expanded.drop('repeat_times', axis=1)

# 查看结果
print(df_expanded)

运行结果

String_ColumnString_Column_2Integer_Column
AX1
BY-1
BY-1
CZ1
CZ1
CZ1

代码说明

  • df.index.repeat(df['repeat_times']):根据repeat_times的数值,重复对应索引的行
  • np.sign():直接返回数值的符号,正数返回1,负数返回-1,完美匹配需求
  • 若不想依赖numpy,也可以用lambda表达式实现符号转换:
    df_expanded['Integer_Column'] = df_expanded['Integer_Column'].apply(lambda x: 1 if x > 0 else -1)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:42:52