我有以下数据框。
id int_date
1 20160228
2 20161231
3 20160618
4 20170123
5 20151124
如何将int格式的上述日期转换为mm / dd / yyyy的日期格式?想要以特定格式进行进一步的excel操作吗?
id int_date
1 02/28/2016
2 12/31/2016
3 06/18/2016
4 01/23/2017
5 11/24/2015
是否也可以生成第三列,只有几个字?比如1月,2月等来自int_date?
我试过了
date = datetime(year=int(s[0:4]), month=int(s[4:6]), day=int(s[6:8]))
但是date是在datetime对象中,如何将它作为日期放在pandas DF中?
答案 0 :(得分:18)
您可以使用datetime
方法。
from datetime import datetime
a = '20160228'
date = datetime.strptime(a, '%Y%m%d').strftime('%m/%d/%Y')
祝你好运;
答案 1 :(得分:3)
肯定会有更好的解决方案,但由于你的日期中有零而不是单位数元素(即06而不是6),为什么不将它转换为字符串并转换子节?
使用datetime也可以获得月份字符串等。
//编辑: 为了更精确一点,这样的事情应该可以胜任:
def get_datetime(date):
date_string = str(date)
return datetime.date(date_string[:3], date_string[4:6], date_string[6:8]
答案 2 :(得分:2)
使用applymap
:
import pandas as pd
dates = [
20160228,
20161231,
20160618,
20170123,
20151124,
]
df = pd.DataFrame(data=list(enumerate(dates, start=1)), columns=['id','int_date'])
df[['str_date']] = df[['int_date']].applymap(str).applymap(lambda s: "{}/{}/{}".format(s[4:6],s[6:], s[0:4]))
print(df)
可发出:
$ python test.py
id int_date str_date
0 1 20160228 02/28/2016
1 2 20161231 12/31/2016
2 3 20160618 06/18/2016
3 4 20170123 01/23/2017
4 5 20151124 11/24/2015