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

基于status列字符串值生成session列的R循环实现方法

给DataFrame的Session列按START/STOP分组赋值

方法1:矢量化操作(推荐,高效无循环)

利用Pandas的cumsum()函数统计START的出现次数,自动为每组START-STOP分配连续的Session编号:

import pandas as pd

# 构建示例数据框
df = pd.DataFrame({
    'Status': ['START', 'STOP', 'START', 'STOP', 'START', 'STOP']
})

# 生成Session列
df['Session'] = df['Status'].eq('START').cumsum()

# 输出结果
print(df)

运行结果:

Status  Session
0  START        1
1   STOP        1
2  START        2
3   STOP        2
4  START        3
5   STOP        3

方法2:循环实现(符合你要求的循环方式)

如果必须用循环,可通过遍历行维护当前Session编号,遇到START时递增:

import pandas as pd

# 初始化数据框(含空Session列)
df = pd.DataFrame({
    'Status': ['START', 'STOP', 'START', 'STOP', 'START', 'STOP'],
    'Session': [0] * len(df)
})

current_session = 0
for idx, row in df.iterrows():
    if row['Status'] == 'START':
        current_session += 1
    df.loc[idx, 'Session'] = current_session

# 输出结果
print(df)

该方法同样能得到预期结果,但注意:iterrows()在处理大数据集时效率远低于矢量化操作,建议优先使用方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:12:31