我有一个csv文件,日期格式为dd-mmm-yy,我希望以yyyy-mm-dd格式阅读。解析日期选项有效,但它不能在2000年之前转换日期 示例:实际日期是1968年8月1日。它显示为01-Aug-68。 Pandas date parase和correction = true将日期读作2068年8月1日。
是否有任何选项可以在2000年之前以正确的格式读取熊猫中的日期。
答案 0 :(得分:2)
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')
对它们施加约束
dateparse = lambda x: d(x) if 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
瞧