【发布时间】:2021-06-28 21:34:45
【问题描述】:
我想读取 csv,列中有日期,但列中的日期格式不同。
具体来说,有些日期是“dd/mm/yyyy”格式,有些是“4####”格式(excel 1900日期系统,序列号表示自1900/1/1以来经过的天数)。
有没有办法使用read_csv 或pandas.to_datetime 将列转换为日期时间?
尝试使用pandas.to_datetime不带参数无济于事。
df["Date"] = pd.to_datetime(df["Date"])
返回
ValueError: year 42613 is out of range
大概它可以很好地读取“dd/mm/yyyy”格式,但会产生“4####”格式的错误。
注意:该列也是混合类型
感谢任何帮助
例子
dates = ['25/07/2016', '42315']
df = DataFrame (dates, columns=['Date'])
#desired output ['25/07/2016', '07/11/2015']
【问题讨论】:
-
您能否包含一个示例框架作为可复制的代码片段,以及用于测试解决方案的预期输出?
-
谢谢,添加示例输入/输出
-
42315的日期格式是什么423代表什么?我假设15是两位数的年份。 -
嗨亨利,日期格式是 2015-11-07 在 excel 1900 日期系统下的日期表示,序列号表示自 1900/1/1 以来经过的天数。 IE。如果将 42315 作为数字输入到 excel 中并将格式更改为日期,它将返回 2015-11-07。
-
@jeremyw,您能否将数据集拆分为两个不同的数据帧:每个数据帧中的一种日期类型?例如。将带有日期的列转换为字符串并选择那些有“/”符号的,哪些没有。在这一步之后,您可以以不同的方式处理这些日期或统一它们的格式。