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

如何为DataFrame特定行号范围添加event列并赋值?

给大型DataFrame批量添加指定行范围的event列

R 实现方案

基础R方法(快速直接)

先初始化event列为NA(或0),再通过行号索引直接赋值:

# 单个DataFrame操作
df$event <- NA  # 初始化为NA,需设为0则改为0
df[19:53, "event"] <- 1  # 19-53行(1-based)赋值为1
df[65:92, "event"] <- 2  # 65-92行赋值为2

# 多个DataFrame批量处理(假设DF存储在列表dfs中)
dfs <- lapply(dfs, function(x) {
  x$event <- NA
  x[19:53, "event"] <- 1
  x[65:92, "event"] <- 2
  x
})

dplyr 方法(tidy风格,多场景友好)

用row_number()结合case_when,适合后续扩展更多事件范围:

library(dplyr)

# 单个DF操作
df <- df %>%
  mutate(
    event = case_when(
      row_number() %in% 19:53 ~ 1,
      row_number() %in% 65:92 ~ 2,
      TRUE ~ NA_real_  # 其他行设为NA,改为0则写0
    )
  )

# 多个DF批量处理
dfs <- lapply(dfs, function(x) {
  x %>% mutate(
    event = case_when(
      row_number() %in% 19:53 ~ 1,
      row_number() %in% 65:92 ~ 2,
      TRUE ~ NA_real_
    )
  )
})

Python Pandas 实现方案

注意:Pandas的行索引默认是0-based,所以你提到的19行对应代码里的18,53行对应52,以此类推。

基础索引方法

import pandas as pd
import numpy as np

# 单个DataFrame操作
df['event'] = np.nan  # 初始化为NA,需设为0则写0
df.loc[18:52, 'event'] = 1  # 对应原19-53行
df.loc[64:91, 'event'] = 2  # 对应原65-92行

# 多个DF批量处理(假设DF存储在列表dfs中)
def add_event_col(df):
    df['event'] = np.nan
    df.loc[18:52, 'event'] = 1
    df.loc[64:91, 'event'] = 2
    return df

dfs = [add_event_col(df) for df in dfs]

np.select 方法(多条件场景更清晰)

适合后续要添加更多事件范围的情况:

import pandas as pd
import numpy as np

# 单个DF操作
conditions = [
    df.index.isin(range(18, 53)),  # 对应原19-53行
    df.index.isin(range(64, 92))   # 对应原65-92行
]
choices = [1, 2]
df['event'] = np.select(conditions, choices, default=np.nan)

# 多个DF批量处理
def add_event_col(df):
    conditions = [
        df.index.isin(range(18, 53)),
        df.index.isin(range(64, 92))
    ]
    choices = [1, 2]
    df['event'] = np.select(conditions, choices, default=np.nan)
    return df

dfs = [add_event_col(df) for df in dfs]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:13:16