将日期分为日,月和年

时间:2016-09-02 23:31:50

标签: python date csv

我有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)"""

2 个答案:

答案 0 :(得分:3)

有一些问题:

  1. 如果分隔符是CSV,则分隔符应为逗号而不是分号。
  2. 当您致电class StatusInfo{ long uptime; } class Status { List<StatusInfo> status = new ArrayList<>(); } 时,您正在拆分日期字符串而不是分隔符。您可能希望拆分a.split(x[i]),因为这是分隔日期字段的原因。
  3. 不改变太多代码,以下代码适用于我。从你的问题中不清楚你想要对数据做什么,但我试图证明你将如何得到它。

    .

    <强>输出

    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)