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

基于subject_id与hour_id列合并两个患者生理指标CSV文件的Pandas技术问题

解决Pandas合并两个CSV文件(按患者+小时匹配)的问题

你的问题根源在于用错了合并方式:pd.concat(axis=1)只是简单把两个DataFrame按列横向拼接,它不会根据subject_id和hour_id的实际值去匹配对应数据,再加上keys参数的用法不符合你的需求,才导致出现重复列、结果不符合预期的情况。

正确的合并方案:使用pd.merge()

我们需要基于subject_id和hour_id这两个共同标识,对两个数据集做精准匹配合并,具体代码如下:

import pandas as pd

# 读取两个CSV文件,请替换成你的实际文件路径
df_blood_pressure = pd.read_csv('D:\\你的血压文件路径.csv', low_memory=False, error_bad_lines=False)
df_heart_rate = pd.read_csv('D:\\你的心率文件路径.csv', low_memory=False, error_bad_lines=False)

# 基于subject_id和hour_id进行匹配合并
merged_df = pd.merge(df_blood_pressure, df_heart_rate, on=['subject_id', 'hour_id'], how='inner')

# 输出合并结果
print(merged_df)

关键参数解释

  • on=['subject_id', 'hour_id']:指定用这两列作为匹配的"键",确保只有当两个文件中这两列的值完全一致时,才会把对应行的数据合并到一起。
  • how='inner':表示只保留两个文件中都存在的匹配行(完全符合你要的"同一患者同一测量小时"的需求)。如果需要保留某一个文件的所有行,可以换成left/right/outer,但你的场景用inner最合适。

为什么concat不适合你的场景?

pd.concat(axis=1)是严格按行索引来拼接列的,它不会检查subject_id和hour_id的实际值是否匹配——只是默认两个DataFrame的行顺序完全一致,直接把第二张表的列贴到第一张表右边。如果你的数据行顺序万一不一致,结果会完全错误;哪怕顺序对,也会出现重复的列(比如你输出里的重复hour_id),这显然不是你想要的逻辑匹配合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:47:45