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]