【问题标题】:Converting CSV Datetime to an Integer将 CSV 日期时间转换为整数
【发布时间】:2017-02-27 15:57:59
【问题描述】:

我的 csv 文件包含格式如下的日期:

10/3/1946 0:00:00
4/4/1947 0:00:00

我想知道 csv 文件中过去出现的值,比如12/18/1957 0:00:000

为了进行比较,我假设我需要将其转换为数字,例如,10/3/1946 0:00:00 将是 17078.00

有没有内置的方法可以做到这一点?

【问题讨论】:

  • 为什么不使用strptime将所有内容实际比较为日期时间?
  • 我认为这样做会更容易,因为我还需要从某个日期开始的“经过的天数”。
  • 您可以使用strptime 转换日期,然后他们计算差异date1 - date2

标签: python csv datetime


【解决方案1】:

我建议您将 csv 文件中的日期转换为 datetime 格式。这是通过获取字符串并使用strptime() 将其转换为datetime 对象来完成的。该函数采用格式字符串,允许您告诉它您的日期字符串是如何格式化的。例如%Y 告诉它期待一个四位数的年份。

首先创建一个日期时间来比较,例如after_date。然后可以按如下方式比较两个日期:

from datetime import datetime            
import csv

after_date = datetime(1957, 12, 18)
print "Entries after {}".format(after_date)

with open('input.csv') as f_input:
    for row in csv.reader(f_input):
        row_date = datetime.strptime(row[0], "%m/%d/%Y %H:%M:%S")

        if row_date >= after_date:
            print "{} - {}".format(row[1], row_date)

这假设您尝试比较的日期在第一列,即row[0]。例如,如果你有一个 csv 文件,它看起来像:

10/3/1946 0:00:00,row1
4/4/1947 0:00:00,row2
4/4/1957 0:00:00,row3
12/19/1957 0:00:00,row4
1/1/1958 0:00:00,row5                

脚本将显示以下信息:

Entries after 1957-12-18 00:00:00
row4 - 1957-12-19 00:00:00
row5 - 1958-01-01 00:00:00    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-21
    • 2019-02-16
    • 2021-05-16
    • 2019-06-01
    • 1970-01-01
    • 2017-08-29
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多