[英]to_csv storing columns label on every insert of data to csv file
[英]Insert data in specific columns in csv file
我正在嘗試插入從日期列中獲取的數據。 列標題是csv文件中的date,day,month,year,pcp1,pcp2,pcp3,pcp4,pcp5,pcp6
。 列day, month, year
目前是空的。
我想通過拆分方法將從日期獲得的數據插入到這些列中。 我該怎么做?
以下是csv文件中的示例數據:
date day month year pcp1 pcp2 pcp3 pcp4 pcp5 pcp6
1.01.1979 0.431 2.167 9.375 0.431 2.167 9.375
2.01.1979 1.216 2.583 9.162 1.216 2.583 9.162
3.01.1979 4.041 9.373 23.169 4.041 9.373 23.169
4.01.1979 1.799 3.866 8.286 1.799 3.866 8.286
5.01.1979 0.003 0.051 0.342 0.003 0.051 0.342
6.01.1979 2.345 3.777 7.483 2.345 3.777 7.483
7.01.1979 0.017 0.031 0.173 0.017 0.031 0.173
這是我的代碼:
import csv
dd=[]
mm=[]
yy=[]
with open('output2.csv') as csvfile:
reader = csv.DictReader(csvfile, fieldnames=("date","day","month","year","pcp1","pcp2","pcp3","pcp4","pcp5","pcp6"), delimiter=';', quotechar='|')
next(reader) # skip header row
x = [row['date'] for row in reader]
for date_str in x:
day, month, year = date_str.split('.')
dd.append(day)
mm.append(month)
yy.append(year)
csvfile.close()
with open('output2.csv') as f:
fieldnames = ["date","day","month","year","pcp1","pcp2","pcp3","pcp4","pcp5","pcp6"]
writer = csv.DictWriter(f, fieldnames=fieldnames,delimiter=';', quotechar='|')
for i in range(len(dd)):
writer.writerow({'day':dd[i]})
for i in range(len(mm)):
writer.writerow({'month':mm[i]})
for i in range(len(yy)):
writer.writerow({'year':yy[i]})
f.close()
您可以按如下方式解析CSV。 這會將所有行讀入列表,然后將日期組件插入空列。
import csv
with open('output2.csv', newline='') as f_input:
csv_input = csv.reader(f_input, delimiter=';', quotechar='|')
header = next(csv_input)
rows = list(csv_input)
with open('output2b.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output, delimiter=';', quotechar='|')
csv_output.writerow(header)
for row in rows:
day, month, year = row[0].split('.')
row[1:4] = [day, month, year]
csv_output.writerow(row)
給你以下輸出:
date;day;month;year;pcp1;pcp2;pcp3;pcp4;pcp5;pcp6
1.01.1979;1;01;1979;0.431;2.167;9.375;0.431;2.167;9.375
2.01.1979;2;01;1979;1.216;2.583;9.162;1.216;2.583;9.162
3.01.1979;3;01;1979;4.041;9.373;23.169;4.041;9.373;23.169
4.01.1979;4;01;1979;1.799;3.866;8.286;1.799;3.866;8.286
5.01.1979;5;01;1979;0.003;0.051;0.342;0.003;0.051;0.342
6.01.1979;6;01;1979;2.345;3.777;7.483;2.345;3.777;7.483
7.01.1979;7;01;1979;0.017;0.031;0.173;0.017;0.031;0.173
使用Python 3.5.2進行測試
使用熊貓。 您將能夠使用距離工作不太遠的大部分代碼
import pandas as pd
filename = "test.csv"
data = pd.read_excel(filename)
x = data["date"]
dd=[]
mm=[]
yy=[]
for date_str in x:
day, month, year = date_str.split('.')
dd.append(day)
mm.append(month)
yy.append(year)
data["day"] = dd
data["month"] = mm
data["year"] = yy
data.to_csv("test2.csv")
在test2.csv中,日月份已填滿。 如果你不想讓索引作為第一行(我不會)使用
data.to_csv("test2.csv",index = False)
作為最后的車道
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.