【问题标题】:How can I convert a date variable into "int" in Python?如何在 Python 中将日期变量转换为“int”?
【发布时间】:2018-03-12 01:34:15
【问题描述】:

我正在研究回归问题,数据显示为三列的 csv 文件,其中第二列包含日期,我想转换日期(格式:1/1/2015 12:00:00)转换为 int (112015120000) 以便能够规范化和应用我的模型。 我是这样处理的:

data_set = pd.read_csv('train.csv')
date = data_set['Date'] # Dates represent the header of the dates' column
dates = date.values
date1 = [date.replace("-","") for date in dates ]
date2 = [date.replace(":","") for date in date1 ]
date_train = [date.replace(" ","") for date in date2 ]

但我觉得这很耗时且效率低下,有没有更短的方法呢?否则,是否可以直接在 datetime 类型上应用规范化?

【问题讨论】:

    标签: python-3.x type-conversion normalization prediction


    【解决方案1】:

    你可以这样做:

    df['date_new'] = df['date'].str.replace('\D', '').astype(int)
    

    说明:

    1.'\D' 将所有非数字字符替换为''
    2. 最后,我们用astype将结果字符串转换为整数。

    这是一个虚拟示例:

    df = pd.DataFrame({'date' : pd.date_range('10/1/2018', periods=10, freq='H')})
    df['date'] = df['date'].astype(str)
    df['new_date'] = df['date'].str.replace('\D', '').astype(int)
    
        date                    new_date
    0   2018-10-01 00:00:00     20181001000000
    1   2018-10-01 01:00:00     20181001010000
    2   2018-10-01 02:00:00     20181001020000
    3   2018-10-01 03:00:00     20181001030000
    4   2018-10-01 04:00:00     20181001040000
    5   2018-10-01 05:00:00     20181001050000
    6   2018-10-01 06:00:00     20181001060000
    7   2018-10-01 07:00:00     20181001070000
    8   2018-10-01 08:00:00     20181001080000
    9   2018-10-01 09:00:00     20181001090000
    

    【讨论】:

      【解决方案2】:

      我建议转换为 unix 时间戳而不是 int,它更简洁且被普遍接受

      import time 
      timestamp = time.mktime(time.strptime('1/1/2015 12:00:00', '%d/%m/%Y %H:%M:%S'))
      

      结果是一个时间戳,可以很容易地转换为 int。所有主要语言都支持使用时间戳来回转换。

      【讨论】:

        【解决方案3】:

        使用正则表达式(re)。将所有非数字 0 到 9 替换为空白。

        import re
        d = '1/1/20015 12:00:00'
        new = re.sub('[^0-9]', '', str(d))
        print(int(new))
        
        Result: 20150101120000
        

        【讨论】:

          猜你喜欢
          • 2020-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-11
          • 2013-10-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多