如何在 Python 中将日期变量转换为“int”?

新手上路,请多包涵

我正在研究回归问题,数据显示为三列的 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 ]

但我觉得这很耗时且效率低下,有没有更短的方法来做到这一点?否则,是否可以直接在日期时间类型上应用规范化?

原文由 Sofia693 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 634
2 个回答

你可以做 :

 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

原文由 YOLO 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

Result: 20150101120000

原文由 jose_bacoy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进