将数字转换为特殊日期时间

时间:2017-05-30 21:36:44

标签: python python-2.7 python-3.x pandas numpy

日期1:20061201
日期2:01/12/2006

如何在Python中使用pandas将date1转换为date2(日/月/年)格式?谢谢!日期1和日期2是csv文件中的两列。

5 个答案:

答案 0 :(得分:2)

数据:

In [151]: df
Out[151]:
       Date
0  20061201
1  20170530

选项1:

In [152]: pd.to_datetime(df.Date, format='%Y%m%d').dt.strftime('%d/%m/%Y')
Out[152]:
0    01/12/2006
1    30/05/2017
Name: Date, dtype: object

选项2:

In [153]: df.Date.astype(str).str.replace('(\d{4})(\d{2})(\d{2})', r'\3/\2/\1')
Out[153]:
0    01/12/2006
1    30/05/2017
Name: Date, dtype: object

答案 1 :(得分:1)

如果您正在使用pandas并希望返回timestamp个对象

pd.to_datetime('20061201')

Timestamp('2006-12-01 00:00:00')

如果你想要一个字符串

str(pd.to_datetime('20061201').date())

'2006-12-01'

假设您有一个数据框df

df = pd.DataFrame(dict(Date1=['20161201']))

然后你可以使用矢量化形式的相同技术。

作为时间戳

df.assign(Date2=pd.to_datetime(df.Date1))

      Date1       Date2
0  20161201  2016-12-01

as strings

df.assign(Date2=pd.to_datetime(df.Date1).dt.date.astype(str))

      Date1       Date2
0  20161201  2016-12-01

答案 2 :(得分:0)

最简单的方法可能是使用datetime提供的日期解析:

from datetime import datetime
datetime.strptime(str(20061201), "%Y%m%d")

您可以使用以下方法将此转换应用于pandas数据框/系列中的所有行:

from datetime import datetime
def convert_date(d):
    return datetime.strptime(str(d), "%Y%m%d")
df['Date2'] = df.Date1.apply(convert_date)

这会在您的数据框Date2中添加df列,这是Date1列的日期时间表示。

然后,您可以使用strftime

再次序列化日期
def serialize_date(d):
    return d.strftime(d, "%d/%m/%Y")
df['Date2'] = df.Date2.apply(serialize_date)

或者你可以用字符串操作完成所有操作:

def reformat_date(d):
    year = d // 10000
    month = d % 10000 // 100
    day = d % 100
    return "{day}/{month}/{year}".format(day=day, month=month, year=year)
df['Date2'] = df.Date1.apply(reformat_date)

这比使用strptime提供的解析机制要快得多。

答案 3 :(得分:0)

import datetime
A=datetime.datetime.strptime('20061201','%Y%m%d')
A.strftime('%m/%d/%Y')

答案 4 :(得分:0)

您可以在此处使用apply和lambda函数。

假设您有一个名为df的数据集,如下所示:

id    date1
0     20061201
2     20061202

您可以使用以下代码:

df['date2'] = df['date1'].apply(lambda x: x[6:] + '/' + x[4:6] + '/' + x[:4])

结果将是:

id      date1      date2
 0     20061201    01/12/2016
 2     20061202    02/12/2016