datetime将不会在熊猫系列(数据框的列)上运行。您可以使用to_datetime
或者您可以在apply
内使用datetime
。像下面这样的东西应该工作:
In [9]: df
Out[9]:
year month
0 2007 1
1 2007 2
2 2007 3
3 2007 4
4 2008 1
5 2008 3
In [10]: pd.to_datetime(df['year'].astype(str) + '-'
+ df['month'].astype(str)
+ '-1')
Out[10]:
0 2007-01-01
1 2007-02-01
2 2007-03-01
3 2007-04-01
4 2008-01-01
5 2008-03-01
dtype: datetime64[ns]
或者使用应用:
In [11]: df.apply(lambda x: datetime(x['year'],x['month'],1),axis=1)
Out[11]:
0 2007-01-01
1 2007-02-01
2 2007-03-01
3 2007-04-01
4 2008-01-01
5 2008-03-01
dtype: datetime64[ns]
另一个编辑:您也可以完成大部分的日期解析与read_csv
,但那么你就需要调整天你在阅读之后(注意,我的数据是在一个名为“数据”的字符串):
In [12]: df = pd.read_csv(StringIO(data),header=True,
parse_dates={'date':['year','month']})
In [13]: df['date'] = df['date'].values.astype('datetime64[M]')
In [14]: df
Out[14]:
date
0 2007-01-01
1 2007-02-01
2 2007-03-01
3 2007-04-01
4 2008-01-01
5 2008-03-01
我很确定这个文件是csv。以上数据只是格式的一个例子。然后我删除pd.DataFrame行。但问题仍然存在...... –