我从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。
非常感谢您的帮助。
答案 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)