使用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 文件