找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 9905|回复: 5

[已解决] 关于DataFrame里面数字与日期转换的问题

3

主题

6

帖子

6

积分

贫民

积分
6
ruc大yy 发表于 2017-8-6 21:52:00 | 显示全部楼层 |阅读模式
本帖最后由 ruc大yy 于 2017-8-7 20:14 编辑

大家好,请问一下,我的DataFrame里面有一列日期是整型int的数字格式,比如:2010010820100115
20100122
20100129
就是2010年一月8号这种类型的,现在想改成时间格式的2010-01-08这种,有什么好方法吗,就是可以整列去转换的方法,我之前想的是把20100108通过除以10000,100的方式提取出2010,1,和8三列数字分别代表年月份,再用datetime里的date(year,month,day)函数构造日期,但是这种方法不能对DataFrame里的整列进行操作。请问有什么方式可以将一列的数字转换为日期的吗?谢谢啦~~~



回复

使用道具 举报

0

主题

30

帖子

30

积分

贫民

积分
30
胡扶林 发表于 2017-8-7 01:24:44 | 显示全部楼层
import pandas as pd
df = pd.DataFrame([[20170807]], columns=['A'])
print(df)   
df.A = df.A.apply(str)
df['A'] = pd.to_datetime(df.A)
print(df)
回复 支持 反对

使用道具 举报

3

主题

6

帖子

6

积分

贫民

积分
6
ruc大yy  楼主| 发表于 2017-8-7 14:22:42 | 显示全部楼层
找到方法了,直接写一个pd.to_datetime(stock.date)就可以了~~~~
回复 支持 反对

使用道具 举报

3

主题

6

帖子

6

积分

贫民

积分
6
ruc大yy  楼主| 发表于 2017-8-7 14:24:15 | 显示全部楼层
胡扶林 发表于 2017-8-7 01:24
import pandas as pd
df = pd.DataFrame([[20170807]], columns=['A'])
print(df)   

谢谢啦。向您说的一样,好像那个20100101作为整型,也可以直接用pd.to_datetime()
回复 支持 反对

使用道具 举报

0

主题

25

帖子

25

积分

贫民

积分
25
zps26 发表于 2017-8-8 10:45:46 | 显示全部楼层
ruc大yy 发表于 2017-8-7 14:22
找到方法了,直接写一个pd.to_datetime(stock.date)就可以了~~~~

测试了一下pd.to_datetime(stock.date),没有成功,这样做了
  1. A=[]
  2. B=df['日期']

  3. for i in range(len(B)):
  4.     year=str(B[i])[0:4]
  5.     month=str(B[i])[4:6]
  6.     day=str(B[i])[6:]
  7.     A.append(year+'-'+month+'-'+day)

  8. df['日期']=pd.DataFrame(A)
  9. print(df['日期'])
复制代码
回复 支持 反对

使用道具 举报

3

主题

6

帖子

6

积分

贫民

积分
6
ruc大yy  楼主| 发表于 2017-8-10 16:07:56 | 显示全部楼层
本帖最后由 ruc大yy 于 2017-8-10 16:11 编辑
zps26 发表于 2017-8-8 10:45
测试了一下pd.to_datetime(stock.date),没有成功,这样做了

我用的是python 3.6,是成功了的

In[92]: pd.to_datetime(20100101,format='%Y%m%d')
Out[92]: Timestamp('2010-01-01 00:00:00')
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表