如何将日期变量转换为 Python 中的 "int"?
How can I convert a date variable into "int" in Python?
我正在处理回归问题,数据显示为三列的 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 ]
但是我觉得很费时而且效率低下,有没有更短的方法呢?否则,是否可以直接在日期时间类型上应用规范化?
你可以做到:
df['date_new'] = df['date'].str.replace('\D', '').astype(int)
解释:
1.'\D'
将所有 non-digit 个字符替换为 ''
。
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
我建议转换为 unix 时间戳而不是 int,它更干净且被普遍接受
import time
timestamp = time.mktime(time.strptime('1/1/2015 12:00:00', '%d/%m/%Y %H:%M:%S'))
结果是一个可以轻松转换为 int 的时间戳。所有主要语言都支持与时间戳来回转换。
使用正则表达式 (re)。将所有非数字 0 到 9 替换为空白。
import re
d = '1/1/20015 12:00:00'
new = re.sub('[^0-9]', '', str(d))
print(int(new))
Result: 20150101120000
我正在处理回归问题,数据显示为三列的 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 ]
但是我觉得很费时而且效率低下,有没有更短的方法呢?否则,是否可以直接在日期时间类型上应用规范化?
你可以做到:
df['date_new'] = df['date'].str.replace('\D', '').astype(int)
解释:
1.'\D'
将所有 non-digit 个字符替换为 ''
。
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
我建议转换为 unix 时间戳而不是 int,它更干净且被普遍接受
import time
timestamp = time.mktime(time.strptime('1/1/2015 12:00:00', '%d/%m/%Y %H:%M:%S'))
结果是一个可以轻松转换为 int 的时间戳。所有主要语言都支持与时间戳来回转换。
使用正则表达式 (re)。将所有非数字 0 到 9 替换为空白。
import re
d = '1/1/20015 12:00:00'
new = re.sub('[^0-9]', '', str(d))
print(int(new))
Result: 20150101120000