【问题标题】:Use Python to iterate through a list of date range and append to a set of data in csv使用 Python 遍历日期范围列表并附加到 csv 中的一组数据
【发布时间】:2016-12-06 17:29:03
【问题描述】:

在将列表(日期范围)中的日期附加到 csv 中的一组数据时需要帮助。

我可以创建一个日期范围。然后使用 csv reader 浏览 csv。但是我被困在如何从列表中附加一个日期并一直重复到最后一个日期(请参阅下面的所需输出)。

CSV 数据

AsofDate,Account Number,Security ID,Market Value,Market Value Currency,Security Type Code,Weight
08/01/16,Account 1,123,2000,USD,E,5
08/01/16,Account 1,111,2000,USD,FC,5
08/01/16,Account 2,123,2000,USD,E,5
08/01/16,Account 2,111,2000,USD,FC,5
08/01/16,Account 3,123,2000,USD,E,5
08/01/16,Account 3,111,2000,USD,FC,5

Python 代码:

import sys

import datetime

start = datetime.datetime.strptime("08/01/2016", "%m/%d/%Y")
end = datetime.datetime.strptime("08/31/2016", "%m/%d/%Y")
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)]

date_list = []

for date in date_generated:
    date_list.append(date.strftime("%m/%d/%Y"));
#     print date.strftime("%m/%d/%Y")
print date_list

with open('test.csv', 'rb') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print row

期望的输出

AsofDate,Account Number,Security ID,Market Value,Market Value Currency,Security Type Code,Weight
08/01/16,Account 1,123,2000,USD,E,5
08/01/16,Account 1,111,2000,USD,FC,5
08/01/16,Account 2,123,2000,USD,E,5
08/01/16,Account 2,111,2000,USD,FC,5
08/01/16,Account 3,123,2000,USD,E,5
08/01/16,Account 3,111,2000,USD,FC,5
08/02/16,Account 1,123,2000,USD,E,5
08/02/16,Account 1,111,2000,USD,FC,5
08/02/16,Account 2,123,2000,USD,E,5
08/02/16,Account 2,111,2000,USD,FC,5
08/02/16,Account 3,123,2000,USD,E,5
08/02/16,Account 3,111,2000,USD,FC,5
...
08/31/16,Account 1,123,2000,USD,E,5
08/31/16,Account 1,111,2000,USD,FC,5
08/31/16,Account 2,123,2000,USD,E,5
08/31/16,Account 2,111,2000,USD,FC,5
08/31/16,Account 3,123,2000,USD,E,5
08/31/16,Account 3,111,2000,USD,FC,5

【问题讨论】:

  • 您能否详细解释一下日期 - 1) 您是否要获取 csv 文件并计算来自 test.csv 的所有唯一日期? 2) 在两个日期之间从test.csv 获取数据?无论哪种情况,您都应该使用 pandas 模块,因为这真的很容易。
  • @Chinny84 不幸的是,不能使用熊猫,因为在我的服务器中我无法导入模块。差不多 2. 从 csv 中获取数据并通过从列表中附加一个新日期来创建一组新的相同数据。
  • 我可能有点密集 - 但test.csvFinal Output 有何不同?
  • @Chinny84 我只分享一小部分数据。目标是获取现有数据 (test.csv) 并将该数据克隆到不同的日期。我必须附加两年的日期(大约 730 天)。在 csv 中执行此操作对我来说并不理想。所以写一个自动化脚本。

标签: python csv


【解决方案1】:

对不起,我没有完全理解你的问题,所以我删除了我之前的答案,因为它是错误的。希望这是你想要的。

获取行作为字典

with open('test.csv') as f:
    reader = csv.DictReader(f)
    fieldnames = reader.fieldnames
    rows = [row for row in reader]

遍历日期和行,替换每一行中的日期,然后将其写入文件。

with open('new.csv', 'w') as out:
    writer = csv.DictWriter(out, fieldnames)
    writer.writeheader()
    for date in date_list:
        for row in rows:
            row['AsofDate'] = date
            writer.writerow(row)

【讨论】:

    猜你喜欢
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2014-11-05
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多