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

基于Pandas识别任务历史表中Factor列的变更情况

实现任务Factor字段变更标记的解决方案

步骤分解与代码实现

先处理日期格式并完成排序,再按ID分组识别Factor字段的变更情况,最终为每个Factor列生成对应的变更标记列。

1. 数据预处理(日期转换与排序)

将Date列转换为datetime类型保证排序逻辑准确,随后按ID和Date升序排序:

import pandas as pd 
data = [[1,'12/12/2021','A',500],[2,'10/20/2021','D',200],[3,'7/2/2022','E',300], 
[1,'5/2/2022','B',500],[1,'8/2/2022','B',500],[3,'10/2/2022','C',200], 
[2,'1/5/2022','D',200]]
df = pd.DataFrame(data, columns=['ID', 'Date','Factor1','Factor2'])

# 转换日期格式并排序
df['Date'] = pd.to_datetime(df['Date'])
df = df.sort_values(['ID', 'Date'], ascending=[True, True])

2. 识别Factor字段变更并生成标记列

筛选所有含Factor的列,按ID分组后判断每组内该字段是否存在不同值,以此生成变更标记列:

# 获取所有Factor列
factor_cols = [col for col in df.columns if 'Factor' in col]

# 为每个Factor列生成变更标记
for col in factor_cols:
    # 用transform将分组结果映射到每一行,判断组内是否有超过1个唯一值
    df[f'{col}_has_change'] = df.groupby('ID')[col].transform(lambda x: x.nunique() > 1)

3. 最终输出结果

执行上述代码后,DataFrame会新增Factor1_has_change和Factor2_has_change列,标记对应ID的该Factor字段是否发生过变更:

ID       Date Factor1  Factor2  Factor1_has_change  Factor2_has_change
0   1 2021-12-12       A      500                True               False
3   1 2022-05-02       B      500                True               False
4   1 2022-08-02       B      500                True               False
1   2 2021-10-20       D      200               False               False
6   2 2022-01-05       D      200               False               False
2   3 2022-07-02       E      300                True                True
5   3 2022-10-02       C      200                True                True

后续分析说明

生成标记列后,可通过以下方式统计各Factor列的变更频率:

  • 统计每个Factor列中True的数量(即发生变更的ID数量):
change_counts = {col: df[f'{col}_has_change'].sum() for col in factor_cols}
# 按变更数量排序
sorted_change_counts = sorted(change_counts.items(), key=lambda x: x[1], reverse=True)
print(sorted_change_counts)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:50:49