Pandas 将6位整数转换为yyyymm格式

Pandas 将6位整数转换为yyyymm格式,pandas,datetime,Pandas,Datetime,我制作了一个包含三个日期列的文件: pd.DataFrame({'yyyymm':[199501],'yyyy':[1995],'mm':[1],'Address':['AL1'],'Number':[12]}) yyyymm yyyy mm Address Number 0 199501 1995 1 AL1 12 并将其保存为文件: df.to_csv('complete.csv') 我在文件中读到: df=pd.read_csv('comple

我制作了一个包含三个日期列的文件:

pd.DataFrame({'yyyymm':[199501],'yyyy':[1995],'mm':[1],'Address':['AL1'],'Number':[12]})
    yyyymm  yyyy    mm  Address Number
0   199501  1995    1   AL1     12
并将其保存为文件:

df.to_csv('complete.csv')
我在文件中读到:

df=pd.read_csv('complete.csv')
我的3个日期列转换为int,而不是日期

我尝试将它们转换回日期,使用:

df['yyyymm']=df['yyyymm'].astype(str).dt.strftime('%Y%m')
df['yyyy']=df['yyyy'].dt.strftime('%Y')
df['mm']=df['mm'].dt.dtrftime('%m')
错误如下:

AttributeError: Can only use .dt accessor with datetimelike values
非常奇怪,因为我用来创建datetime列的命令是:

df['yyyymm']=df['col2'].dt.strftime('%Y%m')

我错过什么了吗?如何将6位列转换回yyyymm datetime,将4位列转换回yyyy datetime,将mm位列转换回datetime?

yyyymm
YYYYYY
mm
是整数。通过使用
.astype(str)
,您可以将它们转换为字符串。但是字符串没有
.dt

您可以使用将这些对象转换为datetime对象:

df['yyyymm'] = pd.to_datetime(df['yyyymm'].astype(str), format='%Y%m')
可以对
yyyy
mm
列执行相同的操作:

>>> pd.to_datetime(df['yyyy'].astype(str), format='%Y')
0   1995-01-01
Name: yyyy, dtype: datetime64[ns]
>>> pd.to_datetime(df['mm'].astype(str), format='%m')
0   1900-01-01
Name: mm, dtype: datetime64[ns]

'yyymm'
不是有效的日期时间
df['yyyymm']
是一个整数,不是日期时间对象。谢谢。我最终创建了一个新专栏,将其转换为yyyy-mm-dd,然后从原始问题中提取我想要的格式,但您给了我正确的指导
>>> pd.to_datetime(df['yyyy'].astype(str), format='%Y')
0   1995-01-01
Name: yyyy, dtype: datetime64[ns]
>>> pd.to_datetime(df['mm'].astype(str), format='%m')
0   1900-01-01
Name: mm, dtype: datetime64[ns]