使用python连接两个CSV文件

Posted

技术标签:

【中文标题】使用python连接两个CSV文件【英文标题】:concatenate two CSV files using python 【发布时间】:2020-11-03 03:42:50 【问题描述】:

我有多个 CSV 文件,其中包含各种患者特征和小时测量值,代表记录此测量值的时间,如下所示

file 1
    Subject_id    hour_measure   label               valuenum
    23                1          heart_rate             45
    23                2          respiratory_rate       21
    24                1          heart_rate             40
    24                2          respiratory_rate       22


file 2
    Subject_id    hour_measure   label               valuenum
    23                1          Temperature            20           
    23                2          Blood_pressure         130      
    24                1          Temperature            29           
    24                2          Blood_pressure         50

我想将两个文件连接起来如下

Subject_id  hour_measure  heart rate respiratory_rate  Blood pressure temperature  
  23                1               45           21              130    30 
       
  24                1               40           22               50    29

我使用以下代码

  df= pd.read_csv('data.csv',low_memory=False, error_bad_lines = False)

#df.dtypes
# reshape when columns are only number
df1 = df.pivot_table(index=[hour_measure','subject_id'],
                             columns=['label'],values=['valuenum'])

with open('test.csv', 'a',newline='') as f: 
    df1.to_csv(f, header=True)

但不幸的是,它按如下方式创建文件

label                             valuenum       valuenum
  Subject_id    hour_measure    heart_rate      Respiratory_rate
    23                1               45          21
    24                2               40          22
label                             valuenum       valuenum
  Subject_id    hour_measure    Blood_pressure   Temprature
    23               1               130           20
    24               2               50            29

所以请 id 任何人都可以帮助我如何解决这个问题 任何帮助将不胜感激

【问题讨论】:

你能检查/编辑你想要的结果吗?其中的数字似乎无法追溯到样本数据。此外,“hour_measure”是表示不同时间还是在特定时间进行的测量的数字索引?具体来说,当原始数据中仅报告 1 次时,不清楚如何在结果数据中为每个受试者提供 2 次“heart_rate”测量值。 是的,你是对的。我写这些数字只是为了表达我的想法.. 重新评分为 hour_measure,它表示已经进行了测量 仍然不清楚或不一致。您如何获得受试者 23 的两次心率测量值? 请看清楚,我更正了数字以使其一致 【参考方案1】:

这是你可以做的

pd.concat([
    pd.read_csv(f)
    for f in ("file1.csv", "file2.csv")
]).pivot_table(index=['hour_measure','subject_id'],
                         columns=['label'],values=['valuenum'] ).to_csv("concat_file.csv", index=False)

【讨论】:

我需要根据 Subject_id 和小时度量作为索引进行连接...你能告诉我怎么做吗? 对。您需要在连接后运行 pivot 。我会在一分钟内编辑我的答案。完成。

以上是关于使用python连接两个CSV文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python Pandas 合并多个 CSV 文件

用键值连接两个 csv 文件

将多个 csv 文件连接成具有相同标题的单个 csv - Python

使用python查找两个csv文件列之间的差异

如何连接两个csv文件?

python将两个csv文件按列合并为一个csv