DataFrame同索引行间操作:合并后多指标计算需求
针对你合并df1和df2后的这些数据处理需求,我整理了一套基于Pandas的实操方案,你可以根据自己的实际数据结构调整细节:
1. 计算intakeNo对应intakeAmt的平均值
这里分两种常见场景给出实现代码:
- 场景一:每行包含多个intakeNo对应的intakeAmt列(比如列名是
intakeNo1_intakeAmt、intakeNo2_intakeAmt等),需要计算每行的平均值:
# 筛选所有带'intakeAmt'的列 intake_amt_cols = df.filter(like='intakeAmt').columns # 新增列存储每行的平均值 df['intakeAmt_avg'] = df[intake_amt_cols].mean(axis=1)
- 场景二:按intakeNo分组求平均(比如df里有
intakeNo列标记1/2/3...,intakeAmt是对应数值):
# 分组计算平均值并回合并原表 intake_avg = df.groupby('intakeNo')['intakeAmt'].mean().reset_index() intake_avg.rename(columns={'intakeAmt': 'intakeAmt_avg'}, inplace=True) df = df.merge(intake_avg, on='intakeNo', how='left')
2. 基于intakeSD行数据计算intakeSD值
假设你说的“intakeSD行”是指索引为intakeSD的行存储了原始计算数据,这里以常见的标准差计算和自定义公式为例:
# 提取intakeSD行的原始数据 sd_raw = df.loc['intakeSD'] # 示例1:计算该组数据的标准差 calculated_sd = sd_raw[intake_amt_cols].std() # 示例2:用你的特定公式计算(替换成实际公式即可) # calculated_sd = (sd_raw['raw_value1'] * 0.8) + (sd_raw['raw_value2'] / 2) # 将计算结果写入指定位置(比如新增一行或列) df.loc['intakeSD_calculated', intake_amt_cols] = calculated_sd
3. 事件信息(incident information)处理
事件信息通常是字符串格式,这里以拆分字段、标记异常为例:
# 拆分事件内容(假设格式为"事件名称:事件类型") df[['incident_name', 'incident_type']] = df['incident_info'].str.split(':', expand=True) # 标记包含特定关键词的异常事件 df['is_abnormal'] = df['incident_info'].str.contains('异常', case=False).astype(int) # 统计不同事件类型的出现次数 incident_type_stats = df['incident_type'].value_counts()
内容的提问来源于stack exchange,提问作者DPdl
相关产品推荐
相关产品推荐

