Как транспонировать CSV-файл с помощью Jupyter? - PullRequest
0 голосов
/ 29 июня 2018

Отказ от ответственности, я новичок в кодировании, поэтому, пожалуйста, будьте спокойны, заранее спасибо

Как вы переносите данные перед сохранением данных в CSV-файл, используя python в jupyter?

Вот мой код:

import csv

Col1 = "Product Name"
Col2 = "Product Image Is Thumbnail - 1"
Col3 = "Product Code/SKU"
Col4 = "Product Description"
Col5 = "Price"
Col6 = "Cost Price"
Col7 = "Product Image File - 1"
Col8 = "Product Image File - 2"


mydictionary={Col1:[], Col2:[], Col3:[], Col4 :[], Col5:[], Col6:[],  Col7:[], Col8:[]}
csvFile = csv.reader(open("wedding.csv"))
for row in csvFile:
  mydictionary[Col1].append(row[2])
  mydictionary[Col2].append(row[6])
  mydictionary[Col3].append(row[4])
  mydictionary[Col4].append(row[11]) 
  mydictionary[Col5].append(row[7])
  mydictionary[Col6].append(row[8])
  mydictionary[Col7].append(row[9])
  mydictionary[Col8].append(row[10])


print (mydictionary)

with open('test.csv', 'w') as csv_file1:
    writer = csv.writer(csv_file1, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    for key, value in mydictionary.items():
       writer.writerow([key, value])``

1 Ответ

0 голосов
/ 29 июня 2018

Вы неправильно строите свой объект данных. CSV - это строки данных, поэтому лучше всего создать массив строк, а затем записать их. Примерно так:

import csv

# First row is the title row
rows = [(
    "Product Name",
    "Product Image Is Thumbnail - 1",
    "Product Code/SKU",
    "Product Description",
    "Price",
    "Cost Price",
    "Product Image File - 1",
    "Product Image File - 2"
)]

csvFile = csv.reader(open("wedding.csv"))
for row in csvFile:
    # add a row of data transposing positions as desired
    # NOTE: the double parenthesis are intentional, we're appending a tuple to the array  
    rows.append((row[2], row[6], row[4], row[11], row[7], row[8], row[9], row[10]))

print(rows)

with open('test.csv', 'w') as csv_file1:
    writer = csv.writer(csv_file1, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    for row in rows:
        # write out each row
        writer.writerow(row)
...