Запись данных python dict в файл .csv и исправление форматирования

#python #csv

#python #csv

Вопрос:

Я записываю свои df данные в .csv файл для загрузки в Minitab. Однако в настоящее время я выполняю много пост-манипуляций с .csv файлом, чтобы сделать его удобным для Minitab. Я хотел бы написать свой код на Python, чтобы мне было проще и быстрее иметь его в желаемом формате.

В настоящее время: csv.writer в настоящее время выполняется запись .csv в следующий формат:

введите описание изображения здесь

Моя цель: записать csv в этом формате; (а также заменить точки на запятые).

введите описание изображения здесь

 import csv
a_file = open("raw_data.csv", "w")


writer = csv.writer(a_file)
for key, value in df.items():
    writer.writerow([key, value])

a_file.close()
 

Мой df выглядит следующим образом:

{'K': [77.92589285714281, 75.34811320754717, 77.68070175438596, 75.37850467289722, 79.62212389380527, 79.40999999999998, 79.3535714285714, 77.35833333333332, 79.21904761904761, 'Z': [76.04260869565215, 80.10176991150445, 76.62086956521739, 77.64473684210527, 79.50087719298244, 80.70350877192982, 78.92543859649123, 80.88198198198197, 78.96869565217392, 77.112389380531,}

Ответ №1:

вы очень близки

 import csv
a_file = open("raw_data.csv", "w")

writer = csv.writer(a_file)
for key, value in df.items():

    # value is a list, so you have to iterate through that
    for v in value:

        # you'd see this fix in a moment on your own 
        writer.writerow([value, key])

a_file.close()
 

Я не знаю, как выполнить десятичное преобразование, я уверен, что это связано с «locale».

Ответ №2:

Поскольку у вас есть все значения внутри ключа, вам нужно снова повторить значения. Код, который вам должен понадобиться, выглядит следующим образом:

 import csv
a_file = open("raw_data.csv", "w")


writer = csv.writer(a_file, quoting=csv.QUOTE_ALL)
for key, values in df.items():
    for value in values:
        writer.writerow([key, str(value).replace(".",",")])
 

Диалект quoting закрывает все значения и ключи двойными кавычками, поскольку вы будете использовать запятые в значениях, которые вам понадобятся (поскольку формат csv работает с запятыми), а str(value).replace(".",",") просто замените точки запятыми