У меня есть файл yml следующим образом:
Stocks:
- name: shop1
apples: 100
mangoes: 200
- name: shop2
apples: 20
mangoes: 50
bananas: 100
garbage: 'something'
Я хочу создать файл данных TSV (или CSV или PANDAS), который выглядит следующим образом:
name category apples mangoes bananas
shop1 fruits 100 200 0
shop2 fruits 20 50 100
Мой код на данный момент выглядит следующим образом:
import yaml, csv
csv_columns = ['name','apples','mangoes','bananas', 'category']
with open('fruits.yml', 'r') as f:
doc = yaml.load(f)
csv_file = "somename.csv"
try:
with open(csv_file, 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns, extrasaction='ignore')
writer.writeheader()
for item in doc["Stocks"]:
item.update( {"category":"fruits"})
for data in doc["Stocks"]:
writer.writerow(data)
except IOError:
print("I/O error")
Работает нормально, за исключением того, что Я не знаю правильного или элегантного способа добавить столбец category
с тем же значением, повторяемым в строках. Это значение фактически является именем файла yaml.