我从一个 csv 文件中提取了下表:
时间戳 user_id 成本 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
为此,我使用了以下语句: import pandas as 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')
Run Code Online (Sandbox Code Playgroud)
但是df中得到的表日期是错误的:月和日无故排列,即01/09/2013无故变成09/01/2013。
非常感谢您的帮助。
嗨,有时由于美国/欧洲时间解析兼容性而发生。
我遵循的是,
情况1
如果您确定您的输入文件具有正确格式的时间戳,并且您想在默认解析器之上使用它,就像在这种情况下一样,请使用(如@filmor 建议的)dayfirst 选项 pd.to_datetime
pd.to_datetime(df['timestamp'], dayfirst=True)
Run Code Online (Sandbox Code Playgroud)
案例二
当您不确定格式的正确性时,请使用默认值 pd.to_datetime(df['timestamp'], dayfirst=True)
这肯定不是随机的。Pandas 默认为美国日期格式,如果没有意义则回退,即"12/3/2014"变成2014-12-03while"13/3/2014"将被解析为2014-03-13.
您可以通过dayfirst=Truetopd.read_csv强制进行欧式日期解析。
| 归档时间: |
|
| 查看次数: |
5036 次 |
| 最近记录: |