pandas 阅读日期从csv以yy-mm-dd格式 [英] pandas reading dates from csv in yy-mm-dd format
问题描述
我有一个csv文件,日期格式显示为dd-mmm-yy,我想以yyyy-mm-dd格式读取。 parse dates选项可以工作,但它不能在2000之前转换日期正确
示例:actual date is 01-Aug-1968。显示为01-Aug-68。 Pandas日期parase和更正= true将日期读取为01-Aug-2068。
是否有任何选项以正确的格式读取日期2000。
from dateutil.relativedelta import relativedelta
import datetime
让我们假设你有这样的csv:
mydates
18-Aug-68
13-Jul-45
12-Sep-00
20-Jun-10
15-Jul-60
定义日期格式
d = lambda x:pd.datetime.strptime(x,'%d-%b-%y')
pre>
对它们设置约束
dateparse = lambda x: d(x)如果d(x) datetime.datetime.now()else d(x) - relativedelta(years = 100)
csv:
df = pd.read_csv(myfile.csv,parse_dates = ['mydates'],date_parser = dateparse)
这里是您的结果:
print df
mydates
0 1968-08-18
1 1945-07-13
2 2000-09-12
3 2010-06-20
4 1960-07-15
Voilà
I have a csv files with dates in the format displayed as dd-mmm-yy and i want to read in the format yyyy-mm-dd. parse dates option works but it not converting dates correct before 2000 Example: actual date is 01-Aug-1968. It is displayed as 01-Aug-68. Pandas date parase and correction=true reads the date as 01-Aug-2068.
Is there any option to read the date in pandas in the correct format for the dates before 2000.
解决方案from dateutil.relativedelta import relativedelta import datetime
let's assume you have a csv like this:
mydates 18-Aug-68 13-Jul-45 12-Sep-00 20-Jun-10 15-Jul-60
Define your date format
d = lambda x: pd.datetime.strptime(x, '%d-%b-%y')
Put a constraint on them
dateparse = lambda x: d(x) if d(x) < datetime.datetime.now() else d(x) - relativedelta(years=100)
read your csv:
df = pd.read_csv("myfile.csv", parse_dates=['mydates'], date_parser=dateparse)
here is your result:
print df mydates 0 1968-08-18 1 1945-07-13 2 2000-09-12 3 2010-06-20 4 1960-07-15
Voilà
这篇关于 pandas 阅读日期从csv以yy-mm-dd格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!