pandas 从 csv 中以 yy-mm-dd 格式读取日期
pandas reading dates from csv in yy-mm-dd format
我有一个 csv 文件,日期格式显示为 dd-mmm-yy,我想以 yyyy-mm-dd 格式阅读。解析日期选项有效,但不能正确转换 2000 年之前的日期
示例:实际日期是 1968 年 8 月 1 日。它显示为 01-Aug-68。 Pandas date parase and correction=true 读取日期为 01-Aug-2068。
是否可以选择以正确格式读取 pandas 中 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')
对它们施加约束
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
瞧
我有一个 csv 文件,日期格式显示为 dd-mmm-yy,我想以 yyyy-mm-dd 格式阅读。解析日期选项有效,但不能正确转换 2000 年之前的日期 示例:实际日期是 1968 年 8 月 1 日。它显示为 01-Aug-68。 Pandas date parase and correction=true 读取日期为 01-Aug-2068。
是否可以选择以正确格式读取 pandas 中 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')
对它们施加约束
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
瞧