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

Pandas如何将DataFrame指定列特定值复制到新列上两行对应位置

实现方案

你可以通过以下几个Pandas核心函数实现需求:

  • isin():快速筛选符合条件的单元格
  • shift():实现整列数据的行偏移
  • where():按条件保留值,不符合的置为NaN
  • fillna():将空值统一替换为0

代码示例

写法1(逻辑清晰易读)

import pandas as pd

# 示例测试数据,可替换为你自己的DataFrame
df = pd.DataFrame({
    'DATA_2': [0, 2, 1, 0, -1, 3, 0, 1, 0]
})

# 初始化新列为全0
df['NEW_DATA'] = 0

# 筛选DATA_2值为1或-1的行
target = df[df['DATA_2'].isin([1, -1])]

# 将目标值赋值到原位置向上偏移2行的对应位置
df.loc[target.index - 2, 'NEW_DATA'] = target['DATA_2'].values

写法2(链式调用更简洁)

# 一步完成创建新列的操作
df['NEW_DATA'] = df['DATA_2'].where(df['DATA_2'].isin([1, -1]))\
                             .shift(-2)\
                             .fillna(0)\
                             .astype(int)

效果说明

以示例测试数据为例,最终输出结果如下:

索引DATA_2NEW_DATA
001
120
21-1
300
4-11
530
600
710
800

符合DATA_2中1/-1向上偏移2行存入NEW_DATA,其余位置为0的要求。如果原符合条件的行在前2行(索引0、1),向上偏移后索引为负,Pandas会自动忽略,不会出现报错,对应位置保留0值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:15:03