我有41年的数据集,我希望通过使用这些数据集进行一些计算,但为此,我需要分别将日期分为日,月和年。
示例数据集(csv文件数据)
date stations pcp
1.01.1979 6 1.071
2.01.1979 6 5.909
3.01.1979 6 9.134
1.01.1979 5 1.229
2.01.1979 5 0.014
3.01.1979 5 3.241
我需要转换这些数据:
day month year stations pcp
1 01 1979 6 1.071
2 01 1979 6 5.909
3 01 1979 6 9.134
当l运行代码时,它会停止,我必须关闭它。没有错误消息。怎么能纠正这个?我是一个新用户,可能还有很多错误。我希望我能在这里弄清楚我的错误。我做了两次尝试,我不确定哪一个是正确的 这是我的代码:
from datetime import date, datetime, timedelta,time
import csv
import numpy as np
a=[]
dd=[]
mm=[]
yy=[]
with open('p2.csv') as csvfile:
x=[]
reader = csv.DictReader(csvfile,fieldnames=("date","stations","pcp"),delimiter=';', quotechar='|')
for row in reader:
x.append(row["date"])
#try1
for i in range(len (x)):
day,month,year=a.split(x[i])
d=int(day)
m=int(month)
y=int(year)
dd.append(d)
mm.append(m)
yy.append(y)
#try2
"""for i in range(len(x)):
an=x[i]
y=datetime.datetime.strftime(an, '%Y')
d=datetime.datetime.strftime(an, '%d')
m=datetime.datetime.strftime(an, '%m')
dd.append(d)
mm.append(m)
yy.append(y)"""
答案 0 :(得分:3)
有一些问题:
class StatusInfo{
long uptime;
}
class Status {
List<StatusInfo> status = new ArrayList<>();
}
时,您正在拆分日期字符串而不是分隔符。您可能希望拆分a.split(x[i])
,因为这是分隔日期字段的原因。不改变太多代码,以下代码适用于我。从你的问题中不清楚你想要对数据做什么,但我试图证明你将如何得到它。
.
<强>输出强>:
import csv
with open('p2.csv') as csvfile:
reader = csv.DictReader(
csvfile, fieldnames=('date', 'stations', 'pcp'), 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('.')
print(day, month, year)
答案 1 :(得分:0)
此脚本将为您提供包含值的列表列表,并将最终列表写入csv。
import csv
with open('p2.csv') as csvfile:
x=[]
reader = csv.reader(csvfile,delimiter=',', quotechar='|')
for num, row in enumerate(reader):
for i, item in enumerate(row):
if i ==0:
yy = []
d, m, y = item.split('.')
yy.append(d)
yy.append(m)
yy.append(y)
else:
yy.append(item)
x.append(yy)
print x
with open('output.csv', 'wb') as csvfile:
datawriter = csv.writer(csvfile,delimiter=',', quotechar='|')
for datarow in x:
datawriter.writerow(datarow)