日期1:20061201
日期2:01/12/2006
如何在Python中使用pandas将date1转换为date2(日/月/年)格式?谢谢!日期1和日期2是csv文件中的两列。
答案 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