0

My csv file:

Measure names,Measure values
State,CA
Audit,Y
WFH,Y
State,MN
Audit,N
WFH,N
State,SC
Audit,Y
WFH,Y
State,LA
Audit,N
WFH,N
State,CO
Audit,P
WFH,N
State,MO
Audit,Y
WFH,N
State,NY
Audit,N
WFH,Y

Expected output :

State,Audit,WFH
CA,Y,Y
MN,N,N
SC,Y,Y
LA,N,N
CO,P,N
MO,Y,N
NY,N,Y

I dont want to use any extra library. I want to use only default python package.

code copied from stack over flow:

with open(r"input.csv") as in_f:
        open(r"output.csv", "w", newline="") as out_f:
    reader = DictReader(in_f)
    writer = None
    for items in reader:
        row = {
            **dict(map(itemgetter("Measure names", "Measure values"), items))
        }
        if not writer:
            writer = DictWriter(out_f, row)
            writer.writeheader()
        writer.writerow(row)

Is that anything posssible using Dict,map and itemgetter. Request your help

Stay cool
  • 11
  • 6

1 Answers1

0

Something like this?:

import csv
from itertools import islice


with open("in.csv", "r", newline="") as in_file:
    reader = csv.DictReader(in_file)

    fieldnames = ["State", "Audit", "WFH"]

    values = (row["Measure values"] for row in reader)

    with open("out.csv", "w", newline="") as out_file:
        writer = csv.DictWriter(out_file, fieldnames=fieldnames)

        writer.writeheader()

        while slc := tuple(islice(values, 3)):
            row = dict(zip(fieldnames, slc))
            writer.writerow(row)
Paul M.
  • 10,481
  • 2
  • 9
  • 15
  • We cannot gaurantee that filednames ["State", "Audit", "WFH"] will be same..Each we get different names.I dont want to hardcode any columns – Stay cool Aug 04 '22 at 18:06