我有兩個 csv 檔案來模擬我需要讀取和比較的患者資料。
Without using Pandas, I need to sort the second file by Subject_ID and append the sex of the patient to the first csv file. I don't know where to start without using Pandas. Any ideas?
So far my plan is to somehow work with a dictionary to try to re-group the second file.
使用 open('Patient_Sex.csv','r') 作為 file_sex,打開('Patient_FBG.csv','r') 作為 file_fbg:patient_reader = csv.DictReader(file_sex) fbg_reader = csv.DictReader(file_fbg)
After this, it gets really muddy for me.
uj5u.com熱心網友回復:
我認為這就是您正在尋找的,假設您正在使用基于您發布的資料的 .csv 檔案。
基本上,您可以將檔案決議為 JSON,然后您可以輕松地操作它們。
import csv
import json
gender_data = []
full_data = []
with open("stack/new.csv", encoding="utf-8") as csvf:
csvReader = csv.DictReader(csvf)
for row in csvReader:
gender_data.append(row)
with open("stack/info.csv", encoding="utf-8") as csvf:
csvReader = csv.DictReader(csvf)
for row in csvReader:
full_data.append(row)
for x in gender_data:
for y in full_data:
if x["SUBJECT_ID"] == y["SUBJECT_ID"]:
y["SEX"] = x["SEX"]
f = csv.writer(open("stack/test.csv", "w "))
f.writerow(["SUBJECT_ID", "YEAR_1", "YEAR_2", "YEAR_3", "SEX"])
for x in full_data:
f.writerow(
[
x["SUBJECT_ID"],
x["YEAR_1"],
x["YEAR_2"],
x["YEAR_3"],
x["SEX"] if "SEX" in x else "",
]
)
uj5u.com熱心網友回復:
您可以在不匯入任何模塊的情況下通過將 csv 檔案讀取為行串列來執行此操作,并在主檔案中附加具有匹配名稱的性別的行:
with open('test1.csv') as csvfile:
main_csv = [i.rstrip() for i in csvfile.readlines()]
with open('test2.csv') as csvfile:
second_csv = [i.rstrip() for i in csvfile.readlines()]
for n, i in enumerate(main_csv):
if n == 0:
main_csv[n] = main_csv[n] ',SEX'
else:
patient = i.split(',')[0]
hits = [line.split(',')[-1] for line in second_csv if line.startswith(patient)]
if hits:
main_csv[n] = main_csv[n] ',' hits[0]
else:
main_csv[n] = main_csv[n] ','
with open('test.csv', 'w') as f:
f.write('\n'.join(main_csv))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/423414.html
標籤:
上一篇:MySQL事務與鎖
下一篇:N天后從組中洗掉用戶
