CSV File Load Into Swift

Hi, I am fairly new Xcode/Swift and am trying to load a CSV File for use in my development. I have placed the CSV file in my Assets folder but when I try to create my Data Model and load the CSV file. I run into the error: No exact matches in call to initializer. Below is the code. I have attached CSV File. Any help fixing this error would be greatly appreciated. Thanks in advance for your help.

Brian

2021_Hospital_Demographic_Data_v3,,,,,,,,,,,,
rpt_rec_num,Provider CCN,Hospital Name,Street Address,City,State Code,Zip Code,Wage Index,Case Max,Base Charge,Medicare Discharges,Total Charges,Total Wage Normalized Charges
695541,520011,LAKEVIEW MEDICAL CENTER OF RICE LAKE,1700 WEST STOUT STREET,RICE LAKE,WI,54868,0.924,1.643279026,16962.63951,267,"$7,081,334.00","$7,442,451.00"
695846,520037,MARSHFIELD MEDICAL CENTER,611 ST JOSEPH AVENUE,MARSHFIELD,WI,54449,0.924,2.143973127,28151.75174,1909,"$109,630,088.00","$115,220,748.00"
695906,30147,BANNER OCOTILLO MEDICAL CENTER,1405 S ALMA SCHOOL RD.,CHANDLER,AZ,85286,1.0668,1.701039826,33182.80798,344,"$20,275,418.00","$19,417,176.00"
696323,340141,NEW HANOVER REGIONAL MEDICAL CENTER,2131 S. 17TH ST,WILMINGTON,NC,28402,0.8803,2.045511463,29625.76722,10032,"$560,670,165.00","$607,937,660.00"
696374,150045,PARKVIEW - DEKALB HEALTH,1316 EAST 7TH STREET,AUBURN,IN,46706,0.9179,1.665437391,20598.68239,115,"$3,737,885.00","$3,945,169.00"
699493,300005,LAKES REGION GENERAL HOSPITAL,80 HIGHLAND STREET,LACONIA,NH,3246,1.029,1.515571061,25877.92766,660,"$26,387,821.00","$25,885,093.00"
699531,50696,KECK HOSPITAL OF USC,1500 SAN PABLO STREET,LOS ANGELES,CA,90033,1.5189,3.539474106,52950.18803,2657,"$647,497,632.00","$497,963,832.00"
699807,190146,EAST JEFFERSON GENERAL HOSPITAL,4200 HOUMA,METAIRIE,LA,70006,0.8391,1.470375984,25729.04072,1499,"$50,683,598.00","$56,709,214.00"
700251,490001,NORTON COMMUNITY HOSPITAL  INC.,100 15TH STREET NW,NORTON,VA,24273,0.8637,1.650006897,29063.68691,29,"$1,266,761.00","$1,390,703.00"
700378,260064,SSM HEALTH-ST. MARYS AUDRAIN,620 E. MONROE,MEXICO,MO,65265,0.837,1.582597222,15009.43974,72,"$1,526,027.00","$1,710,281.00"
701671,180070,OWENSBORO HEALTH TWIN LAKES MEDICAL,910 WALLACE AVENUE,LEITCHFIELD,KY,42754,0.8247,1.446942449,20036.04776,245,"$6,275,728.00","$7,102,797.00"
705263,30146,HONORHEALTH SONORAN CROSSING MED CTR,33400 NORTH 32ND AVENUE,PHOENIX,AZ,85085,1.0668,1.461612903,35890.86613,248,"$13,584,753.00","$13,009,721.00"
705524,520107,HOLY FAMILY MEMORIAL INC,2300 WESTERN AVENUE,MANITOWOC,WI,54221,0.9321,1.42526648,22680.10805,179,"$5,536,171.00","$5,786,210.00"
705766,340050,S.E. REGL MEDICAL CENTER,300 W. 27TH STREET,LUMBERTON,NC,28358,0.8803,1.352659312,25804.32187,1949,"$62,739,509.00","$68,028,785.00"
707155,670300,METHODIST MIDLOTHIAN MEDICAL CENTER,1201 E HIGHWAY 287,MIDLOTHIAN,TX,76065,0.9382,1.713645161,35288.6814,62,"$3,602,169.00","$3,749,281.00"
707180,50136,PETALUMA VALLEY HOSPITAL,400 N. MCDOWELL BLVD,PETALUMA,CA,94954,1.7062,1.56492603,42568.31966,461,"$42,640,950.00","$30,710,101.00"
707392,490084,VCU HEALTH TAPPAHANNOCK HOSPITAL,ROUTE 2,TAPPAHANNOCK,VA,22560,0.8801,1.405131322,19906.33268,348,"$8,975,770.00","$9,733,912.00"
707917,50124,VERDUGO HILLS HOSPITAL,1812 VERDUGO BOULEVARD,GLENDALE,CA,91208,1.5189,1.661829243,42165.39813,1255,"$114,347,510.00","$87,939,973.00"

import Foundation

import CSV

struct HospitalData: Codable { let providerNumber: String let hospital: String let address: String let city: String let state: String let zip: String let wageIndex: Double let caseMix: Double let averageCharge: Double let discharges: Int let totalCharges: Double let adjTotalCharges: Double // Add other fields as needed based on the columns in your CSV file }

func loadHospitalData() -> [HospitalData]? { guard let filePath = Bundle.main.path(forResource: "Hospital_Demographic_Data", ofType: "csv") else { print("File not found") return nil }

do {
    let csv = try CSV(url: URL(fileURLWithPath: filePath))
    var hospitalDataList = [HospitalData]() // Initialize as an empty array
    
    for row in csv.namedRows {
        if let providerNumber = String(row["Provider CCN"] ?? ""), // Replace "Provider CCN" with actual column name
           let hospital = String(row["Hospital Name"] ?? ""), // Replace with actual column name
           let address = String(row["Street Address"] ?? ""),
           let city = String(row["City"] ?? ""), // Replace with actual column name
           let state = String(row["State Code"] ?? ""), // Replace with actual column name
           let zip = String(row["Zip Code"] ?? ""), // Replace with actual column name
           let wageIndex = Double(row["Wage Index"] ?? ""),
           let caseMix = Double(row["Case Max"] ?? ""),
           let averageCharge = Double(row["Base Charge"] ?? ""), // Replace with actual column name
           let discharges = Int(row["Medicare Discharges"] ?? ""),
           let totalCharges = Double(row["Total Charges"] ?? ""),
           let adjTotalCharges = Double(row["Total Wage Normalized Charges"] ?? "") { // Replace with actual column name
            let hospitalData = HospitalData(
                providerNumber: providerNumber,
                hospital: hospital,
                address: address,
                city: city,
                state: state,
                zip: zip,
                wageIndex: wageIndex,
                caseMix: caseMix,
                averageCharge: averageCharge,
                discharges: discharges,
                totalCharges: totalCharges,
                adjTotalCharges: adjTotalCharges
            )
            hospitalDataList.append(hospitalData)
        }
    }
    return hospitalDataList
} catch {
    print("Failed to load CSV file: \(error)")
    return nil
}

}

// Usage Example func main() { if let hospitalData = loadHospitalData() { for data in hospitalData { print("Hospital: (data.hospital), City: (data.city), Average Charge: (data.averageCharge)") } } }

Answered by Frameworks Engineer in 799821022

Can you try TabularData framework?

https://developer.apple.com/documentation/tabulardata

Written by Frameworks Engineer in 799821022
Can you try TabularData framework?

+1

The TabularData Resources post has links to various helpful resources, including an ‘hello world’ style example to get you started.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Having done this ... how can you update a column in a DataFrame ?

CSV File Load Into Swift
 
 
Q