Python pd.to_日期时间更改日期格式产生错误日期

Python pd.to_日期时间更改日期格式产生错误日期,python,pandas,Python,Pandas,我从csv文件中提取了下表: 时间戳用户id成本值1 2011年1月1日11:3 2012年7月1日11957 2013年9月1日12163 2011年2月1日220 8 为此,我使用了以下声明: 作为pd进口熊猫 newnames = ['date','user_id', 'cost', 'val1'] df = pd.read_csv('expenses.csv', names = newnames, header = False) df['timestamp'] = pd.to_datet

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

时间戳用户id成本值1
2011年1月1日11:3
2012年7月1日11957
2013年9月1日12163
2011年2月1日220 8

为此,我使用了以下声明: 作为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日变为2013年1月9日


非常感谢您的帮助。

这肯定不是随机的。熊猫默认为美国日期格式,如果没有意义,则返回,即
“12/3/2014”
变为
2014-12-03
,而
“13/3/2014”
将解析为
2014-03-13


您可以将
dayfirst=True
传递到
pd.read\u csv
以强制进行欧式日期解析。

由于美国/欧洲的时间解析兼容性,有时会发生这种情况

我遵循的是

案例1

如果您确定输入文件的时间戳格式正确,并且希望在默认解析器上使用它,如本例所示,请使用
pd.to\u datetime

pd.to_datetime(df['timestamp'], dayfirst=True)
案例2

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

您正在使用什么版本的pandas,您可以尝试:
df=pd.read_csv('expenses.csv',name=newnames,header=False,parse_dates=[0])
并查看此工作是否使用自动安装了pandas和IPython等库的anaconda。我如何检查最后一个版本(不过我相信我的python版本是2.17)。df=pd.read_csv('expenses.csv',names=newnames,header=False,parse_dates=[0])不起作用。do
pd.version.version
OK不确定,可能是@filmor声明的,您也可以尝试
df=pd.read_csv('expenses.csv',names=newnames,header=False,parse_dates=True)
,我注意到您的格式字符串中没有包含分隔符:
df['timestamp']=pd.to_datetime(df['timestamp'],格式=“%d/%m/%Y”)
格式字符串中不需要“/”分隔符吗?如何使用dayfirst参数强制进行欧式日期解析?谢谢!