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

百万级数据集下,如何用Pandas DataFrame高效生成事件状态列?

高效处理大型事件数据集的状态标记方案

针对几十万行的大型数据集,用iterrows()逐行处理效率极低,以下是基于pandas矢量化操作的高效解决方案,完全规避逐行循环,处理速度会有数量级的提升:

实现步骤

  • 生成事件增量列:识别Event字段中的start/complete事件,分别对应+1/-1,空值则为0
  • 计算增量列的累计和,直接得到当前正在进行的事件数量NicerYetHowMany
  • 根据事件数量生成IsEventHappening?标记:数量大于0时为"Yes",否则为"No"

代码实现

import pandas as pd

# 假设原始数据集存储在DataFrame df中
# 1. 创建事件增量列
df['event_delta'] = df['Event'].apply(
    lambda x: 1 if 'start' in str(x) else (-1 if 'complete' in str(x) else 0)
)

# 2. 计算累计和得到当前事件数
df['NicerYetHowMany'] = df['event_delta'].cumsum()

# 3. 生成事件状态标记
df['IsEventHappening?'] = df['NicerYetHowMany'].map(lambda x: 'Yes' if x > 0 else 'No')

# 清理中间列(可选)
df = df.drop('event_delta', axis=1)

效果验证

用你提供的示例数据测试,运行后会完全匹配目标DataFrame的结果:

TimeEventIsEventHappening?NicerYetHowMany
0No0
4Event1startYes1
13Event2startYes2
16Event1completeYes1
23Event2completeNo0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:17:48