[英]writing csv output python
我需要一個看起來像這樣的csv文件......
Name,Price1,Price2,Date1,Date2
ABC,1000,7500,5/1,6/1
DEF,3000,500,5/1,7/1
GHI,5000,3500,6/1,8/1
並將其寫入另一個csv文件,使其看起來像這樣......
Name,May,June,July,August
ABC,7500,1000, ,
DEF,500, ,3000
GHI, ,3500, ,5000
空間被認為是空白的,因為沒有任何東西去那里,這是我到目前為止的代碼
import csv
with open('test-data.csv','rb') as f:
csv_file=csv.reader(f)
data=[row for row in csv_file]
with open('csv-out.csv', 'wb') as out:
writer=csv.writer(out)
writer.writerow(['Name','May','June','July','August'])
for row in data:
writer.writerow(row[0])
我是python的新手,我不確定如何使用cvs模塊。 我正在考慮制作一個陣列,並將數字與數月相匹配。 由於price1與date2相同而price2與date1相同。 我只是在想這個嗎? 我正在四處搜索,也可能使用datetime將月份號碼連接到月份名稱。 任何幫助或指導表示贊賞!再次感謝!
編輯:
如果我還想從列中添加一些數字,那會難嗎?
Name,May,June,July,August
ABC,7500,1000, ,
DEF,500, ,3000
GHI, ,3500, ,5000
Total,8000,4500,3000,5000
這樣的事情應該適合你的問題:
import csv
import calendar
from collections import defaultdict
months = [calendar.month_name[i] for i in range(0, 13)]
totals = defaultdict(int)
with open("data.csv", "r") as inf, open("data-out.csv", "w") as ouf:
reader = csv.DictReader(inf)
writer = csv.DictWriter(ouf, ['Name'] + months[5:9])
writer.writeheader()
for row in reader:
m1 = months[int(row['Date1'].split('/')[0])]
p2 = int(row['Price2'])
totals[m1] += p2
m2 = months[int(row['Date2'].split('/')[0])]
p1 = int(row['Price1'])
totals[m2] += p1
writer.writerow({'Name': row['Name'], m1: p2, m2: p1})
totals['Name'] = 'Total'
writer.writerow(totals)
with open("data-out.csv", "r") as f:
print(f.read())
Name,May,June,July,August
ABC,7500,1000,,
DEF,500,,3000,
GHI,,3500,,5000
Total,8000,4500,3000,5000
如果您的Date#
跨越整年,您可以更改:
writer = csv.DictWriter(ouf, ['Name'] + months[5:9])
至
writer = csv.DictWriter(ouf, ['Name'] + months[1:])
從它看起來你想要做一個列移位。 對於一些圖書館來說這實際上是相當困難的,但下面的圖書館應該非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.