pd.to_datetime更改日期格式生成错误的日期

时间:2014-04-01 12:38:59

标签: python pandas

我从csv文件中提取了下表:

timestamp user_id cost val1
01/01/2011 1 1 3
01/07/2012 1 19 57
01/09/2013 1 21 63
01/02/2011 2 20 8

为此,我使用了以下语句: 将pandas导入为pd

newnames = ['date','user_id', 'cost', 'val1']
df = pd.read_csv('expenses.csv', names = newnames, header = False)
df['timestamp'] = pd.to_datetime(df['timestamp'],format='%d%m%Y')

但是在df中获得的表格的日期是错误的:数月和日期无缘无故地排列,即2013年9月1日无理由地变为09/01/2013。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

绝对不是随意的。 Pandas默认为美国日期格式,如果没有意义,则会退回,即"12/3/2014"变为2014-12-03"13/3/2014"将被解析为2014-03-13

您可以将dayfirst=True传递给pd.read_csv以强制进行欧式日期解析。

答案 1 :(得分:1)

您好,有时是由于美国/欧洲时间解析兼容性造成的。

我遵循的是

  

案例1

如果您确定输入文件的时间戳格式正确,并且想要在默认解析器的顶部使用它,例如在这种情况下,请在{filmor的建议下,在{ {1}}

pd.to_datetime
  

案例2

如果不确定格式的正确性,请使用默认值,     pd.to_datetime(df ['timestamp'],dayfirst = True)