Я хочу создать файл CSV следующим образом:
Features, Value
f1, 1
f2, 2
f3, 3
Но я получаю это:
f1, f2, f3
1, 2, 3
Код, который я написал:
my_dict = {'f1': 1, 'f2': 2, 'f3': 3}
with open('testcsv.csv', 'w') as f:
w = csv.DictWriter(f, my_dict.keys())
w.writeheader()
w.writerow(my_dict)
Что я должен делать?
Это вызовет ошибку, когда я запишу их в writeheader()!
Ярлыки вашего заголовка должны соответствовать ключам вашего dict. См. пример в документации
Вам нужно будет сначала преобразовать ваши данные в соответствии с ожидаемой структурой
data = [{'Features':i,'Value':my_dict[i]} for i in my_dict]
Как только вы это сделаете, вы можете использовать pandas, чтобы сохранить его как CSV, например:
import pandas as pd
df = pd.DataFrame(data)
df.to_csv('testcsv.csv',index=None)
Полученный CSV:
Features,Value
f1,1
f2,2
f3,3
Разве панды не перебор для этой задачи? Что, если он не хочет поддерживать реализации c..
@adirabargil Это совершенно излишне, я согласен с вами, но это гораздо более удобно для начинающих, чем стандартная библиотека CSV Python
Пока вы поощряете еще одного человека использовать панд, вы получаете мой голос!
Как уже старый программист, я не чувствую, что pandas действительно удобна для начинающих. Вы действительно можете использовать его, не зная Python и его контейнеров, потому что он использует разные контейнеры, но он полон предостережений, с которыми может столкнуться новичок. И я нахожу здесь много вопросов пользователей, которые думали, что это волшебство (что такое Pandas...) и надеются, что они смогут волшебным образом угадать, если бы они захотели. И в этой последней части Pandas - это просто дополнительный язык для изучения...
Я думаю, он имеет в виду, что только этот конкретный случай подходит для начинающих...
Pandas здесь немного переборщил, и модуля csv достаточно. Просто вы использовали его неправильно:
with open('testcsv.csv', 'w', newline='') as f:
w = csv.writer(f)
w.writerow(['Features', 'Value']) # first write a header line
for f, v in my_dict.items():
w.writerow((f,v)) # then one row per item in the dict
Как вы думаете, откуда ваш код получит
Features
иValue
?