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

使用Python Apply函数扩展数据集天数及处理劳动占比的技术问询

解决方案

核心思路

先按ID+PHASENAME提取每个分组的关键元数据(现有最大DAY_COUNTER、固定的C_DAYS和Multi_Factor),批量生成扩展至100天的记录,再用向量化操作计算DAILY_LABOR_PERCENT,全程避免冗余计算,同时适配大数据集。

高效实现代码(Pandas)

import pandas as pd

# 假设原始数据集为df,替换为你的实际数据源导入方式
df = pd.read_csv('your_raw_data.csv')

# 1. 提取分组元数据:每个分组的最大现有天数、固定字段值
group_meta = df.groupby(['ID', 'PHASENAME']).agg(
    max_day=('DAY_COUNTER', 'max'),
    C_DAYS=('C_DAYS', 'first'),  # 假设每个分组内C_DAYS值固定
    Multi_Factor=('Multi_Factor', 'first')  # 假设每个分组内Multi_Factor值固定
).reset_index()

# 2. 筛选出需要扩展的分组(现有最大天数小于100)
need_expand = group_meta[group_meta['max_day'] < 100]

# 3. 批量生成扩展天数记录(用explode替代循环,提升效率)
need_expand['day_sequence'] = need_expand.apply(
    lambda row: list(range(row['max_day'] + 1, 101)), axis=1
)
expanded_records = need_expand.explode('day_sequence').rename(columns={'day_sequence': 'DAY_COUNTER'})
expanded_records['DAY_COUNTER'] = expanded_records['DAY_COUNTER'].astype(int)

# 4. 计算扩展记录的DAILY_LABOR_PERCENT
# 按需求执行:DAILY_LABOR_PERCENT = DAY_COUNTER * Multi_Factor
expanded_records['DAILY_LABOR_PERCENT'] = expanded_records['DAY_COUNTER'] * expanded_records['Multi_Factor']

# 若需调整原数据的DAILY_LABOR_PERCENT(按DAILY_LABOR_PERCENT/Multi_Factor),执行以下行:
# df['DAILY_LABOR_PERCENT'] = df['DAILY_LABOR_PERCENT'] / df['Multi_Factor']

# 5. 合并原数据与扩展数据,排序后输出
final_df = pd.concat(
    [df, expanded_records.drop(columns=['max_day'])],
    ignore_index=True
).sort_values(['ID', 'PHASENAME', 'DAY_COUNTER']).reset_index(drop=True)

# 保存结果
final_df.to_csv('expanded_data.csv', index=False)

解决重复计算与大数据适配的关键点

  • 避免冗余计算:仅提取一次分组元数据,扩展记录只生成一次,不会重复处理同一分组的字段计算
  • 向量化操作代替循环:用explode批量生成扩展序列,替代逐行循环;字段计算用Pandas内置的向量化运算,比逐行处理效率提升10~100倍
  • 大数据集优化:如果数据量超千万级,可替换为Dask DataFrame(API与Pandas兼容),支持分块并行处理,避免内存溢出
  • 无重复行:合并后通过排序保证记录顺序,同时ignore_index=True避免索引重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 16:44:51