00-pandas时间类型的转换方法

00-pandas时间类型的转换方法

分别借助了pandas自身的to_datetime函数、datetime模块的strptime函数和dateutil库的parser类的parse方法

  1. birthday列的时间格式不一致,但to_datetime()函数依然可以理解
import pandas as pd

data = {
    'ID': ['000{}'.format(str(i)) for i in range(1, 7)],
    'name': ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'],
    'gender': [True, True, False, True, False, True],
    'birthday': ['2004-10-01','2000/11/27','01-27-2002',
                 '2002-08-15','2003-01-01','2002-12-31'],
    'height': [1.1, 1.2, 1.3, 1.4, 1.5, 1.6]
}

df = pd.DataFrame(data)
df['birthday'] = pd.to_datetime(df['birthday'])
df['birthday']
0   2004-10-01
1   2000-11-27
2   2002-01-27
3   2002-08-15
4   2003-01-01
5   2002-12-31
Name: birthday, dtype: datetime64[ns]
  1. 当时间中含有汉字时需用到datetime模块中的strptime函数
import pandas as pd
from datetime import datetime

data = {
    'ID': ['000{}'.format(str(i)) for i in range(1, 7)],
    'name': ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'],
    'gender': [True, True, False, True, False, True],
    'birthday': ['2004年10月01日','2000年11月27日','2002年01月27日',
                 '2002年08月15日','2003年01月01日','2002年12月31日'],
    'height': [1.1, 1.2, 1.3, 1.4, 1.5, 1.6]
}

df = pd.DataFrame(data)
df['birthday'] = df['birthday'].apply(datetime.strptime, args=['%Y年%m月%d日'])
df['birthday']
0   2004-10-01
1   2000-11-27
2   2002-01-27
3   2002-08-15
4   2003-01-01
5   2002-12-31
Name: birthday, dtype: datetime64[ns]
  1. parse函数可以转换除了有汉字时间的所有格式,无论是残缺的还是混乱的
import pandas as pd
from dateutil.parser import parse

data = {
    'ID': ['000{}'.format(str(i)) for i in range(1, 7)],
    'name': ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'],
    'gender': [True, True, False, True, False, True],
    'birthday': ['20041001','2000-11-27','2002',
                 '15/08/2002','May,1st 2003','31,12'],
    'height': [1.1, 1.2, 1.3, 1.4, 1.5, 1.6]
}

df = pd.DataFrame(data)
df['birthday'] = df['birthday'].apply(parse)
df['birthday']
0   2004-10-01
1   2000-11-27
2   2002-07-25
3   2002-08-15
4   2003-05-01
5   2020-07-31
Name: birthday, dtype: datetime64[ns]
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值