基于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
相关产品推荐
相关产品推荐

