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

如何在Pandas DataFrame每一行后插入两行以重塑数据?

如何在Pandas DataFrame每行后插入两行并按规则重塑?

需求说明

对现有DataFrame执行如下转换:

  • 原DataFrame的每一行后插入两行新数据
  • 插入的两行需遵循规则:
    • 第一列(name)保持与原行相同的值
    • 第二列(value)第一行固定为0,第二行固定为None

原数据与初始输出

原数据代码:

import pandas as pd

data = [
    ['A',1],
    ['B',2],
    ['C',3],
    ['D',4]
]

df = pd.DataFrame(data,columns=['name','value'])
print(df)

初始输出:

name  value
0    A      1
1    B      2
2    C      3
3    D      4

解决方案1:利用explode展开列表

将每行的value转换为包含目标三个值的列表,再通过explode拆分成行:

# 为每行生成包含原value、0、None的列表
df['value'] = df['value'].apply(lambda x: [x, 0, None])
# 展开列表为单独行并重置索引
result_df = df.explode('value', ignore_index=True)
print(result_df)

解决方案2:重复行后按索引替换值

先将每行重复三次,再根据索引位置替换对应value值:

# 重复每行三次并重置索引
result_df = df.loc[df.index.repeat(3)].reset_index(drop=True)
# 替换索引模3余1的行(每行的第二行)为0
result_df.loc[result_df.index % 3 == 1, 'value'] = 0
# 替换索引模3余2的行(每行的第三行)为None
result_df.loc[result_df.index % 3 == 2, 'value'] = None
print(result_df)

预期输出

两种方案都会得到如下结果:

name  value
0     A      1
1     A      0
2     A   None
3     B      2
4     B      0
5     B   None
6     C      3
7     C      0
8     C   None
9     D      4
10    D      0
11    D   None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:12:13