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

如何基于subject_id和hour_id两列合并多个患者体征CSV文件

解决方案

你之前的代码错误在于直接使用concat按列拼接文件,没有基于subject_id和hour_id两个主键做关联,也没有对同个患者同个小时的多条重复测量数据做聚合,才会出现拼接错位的问题。

可以用以下两种方案实现需求:

方案1:逐个处理每个指标表再合并

适合指标数量少、后续不会新增指标的场景:

import pandas as pd

# 替换为你自己的文件路径
df_bp = pd.read_csv('血压文件路径.csv', low_memory=False, on_bad_lines='skip')
df_hr = pd.read_csv('心率文件路径.csv', low_memory=False, on_bad_lines='skip')
df_wbc = pd.read_csv('WBC文件路径.csv', low_memory=False, on_bad_lines='skip')
df_glu = pd.read_csv('血糖文件路径.csv', low_memory=False, on_bad_lines='skip')

# 预处理函数:按主键分组取第一个测量值,重命名数值列
def preprocess_df(df, col_name):
    return df.groupby(['subject_id', 'hour_id'], as_index=False)['value'].first().rename(columns={'value': col_name})

df_bp = preprocess_df(df_bp, 'blood_pressure')
df_hr = preprocess_df(df_hr, 'heart_rate')
df_wbc = preprocess_df(df_wbc, 'WBC')
df_glu = preprocess_df(df_glu, 'glucose')

# 基于两个主键关联所有表,how参数可按需调整:inner仅保留所有表都有的记录,outer保留所有存在的记录
merged = df_bp.merge(df_hr, on=['subject_id', 'hour_id'], how='outer')\
              .merge(df_wbc, on=['subject_id', 'hour_id'], how='outer')\
              .merge(df_glu, on=['subject_id', 'hour_id'], how='outer')

print(merged)

方案2:合并所有表后透视转换

适合指标多、后续可能新增其他指标文件的场景,扩展性更强:

import pandas as pd

# 把所有指标文件路径放进列表即可,新增文件直接加在列表里
file_list = [
    '血压文件路径.csv',
    '心率文件路径.csv',
    'WBC文件路径.csv',
    '血糖文件路径.csv'
]

# 读入所有文件合并为总表
df_all = pd.concat([pd.read_csv(f, low_memory=False, on_bad_lines='skip') for f in file_list], ignore_index=True)

# 先按维度分组取第一个测量值,再透视转换为宽表
merged = df_all.groupby(['subject_id', 'hour_id', 'label'], as_index=False)['value'].first()\
               .pivot(index=['subject_id', 'hour_id'], columns='label', values='value')\
               .reset_index().rename_axis(columns=None)

print(merged)

注意事项

如果需要取同个时段多次测量的平均值/最大值/最小值,把代码里的.first()替换为.mean()/.max()/.min()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:00:01