在双周分区中拆分CSV数据

时间:2015-08-31 19:10:42

标签: python date csv

由于我在学习气候资料时缺乏使用python的经验,我遇到了问题。我有一个相当大的CSV文件(NetCDF4格式的原始数据),有多个列(纬度,经度,氨浓度和日期(YYYY-MM-DD小时 - 分 - 秒格式))。这是由卫星设备测量的点数据。

但是,为了进行分析,我想将此CSV文件拆分为Biweekly格式以在Arcgis中使用(因此每月2个csv文件,1-15和16个结尾)。我可以手动完成这项工作,但这样做多年可能会非常低效。

非常欢迎任何指向正确方向或提示的指示。

谢谢,

2 个答案:

答案 0 :(得分:0)

我写了一个简短的脚本,如:

out_file_idx = 0
def open_next_file(): return open('splitdata_%s.csv' % out_file_idx, 'w')
out_file = open_next_file()
for line in open('mydata.csv'):
    date = line.split(',')[-1]  # last cell in CSV is date as you mentioned
    if current_day_is_15_and_previous_day_is_not_15()
        or current_day_is_1_and_previous_day_is_not_1():
        out_file.close()
        out_file_idx += 1
        out_file = open_next_file()
    out_file.write(line)
    out_file.write('\n')

当然,您必须在条件语句中实现这两个函数,并实际使用date变量。希望它有所帮助!

答案 1 :(得分:0)

这可能会有所帮助:

import csv
import datetime
import sys
import os.path


def key(date):
    date = datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S')
    date = datetime.date(date.year,
                         date.month,
                         1 if date.day < 16 else 16)
    date = date.strftime('%Y-%m-%d')
    return date

old_key = None
for filename in sys.argv[1:]:
    with open(filename) as file_in:
        base, ext = os.path.splitext(filename)
        rows_in = csv.reader(file_in)
        for row in rows_in:
            new_key = key(row[3])
            if new_key != old_key:
                old_key = new_key
                filename_out = '%s-%s%s'%(base, new_key, ext)
                file_out = open(filename_out, 'w')
                rows_out = csv.writer(file_out)
            rows_out.writerow(row)