pandas读取⽂件的read_csv()⽅法的parse_dates参数

转自百度文库

parse_dates参数:

将csv中的时间字符串转换成⽇期格式

TestTime.csv⽂件:

"name","time","date"

'Bob',21:33:30,2019-10-10

'Jerry',21:30:15,2019-10-10

'Tom',21:25:30,2019-10-10

'Vince',21:20:10,2019-10-10

'Hank',21:40:15,2019-10-10

import pandas as pd

(1)、

df=pd.read_csv('./TestTime.csv',parse_dates=[['time','date']])

print(df)

"""

指定parse_dates = [ ['time', 'date'] ],即将[ ['time', 'date'] ]两列的字符串先合并后解析⽅可。合并后的新列会以下划线'_'连接原列名命名

本例中解析后的命名为:time_date,解析得到的⽇期格式列会作为DataFrame的第⼀列。

在index_col指定表格中的第⼏列作为Index时需要⼩⼼。如本例中,指定参数index_col=0,

则此时会以新⽣成的time_date列⽽不是name作为Index。因此保险的⽅法是指定列名,如index_col = 'name'

结果:

time_date name

0 2019-10-10 21:33:30 'Bob'

1 2019-10-10 21:30:15 'Jerry'

2 2019-10-10 21:25:30 'Tom'

3 2019-10-10 21:20:10 'Vince'

4 2019-10-10 21:40:1

5 'Hank'

"""

(2)、

df=pd.read_csv('./TestTime.csv',parse_dates=['time','date'])

print(df)

"""

如果写成了parse_dates=['time', 'date'] ,pd.read_csv()会分别对'time', 'date'进⾏字符串转⽇期,此外还会造成⼀个⼩⼩的⿇烦。

由于本例中的Time时间列格式为'HH:MM:SS',

parse_dates默认调⽤dateutil.parser.parse解析为Datetime格式,在解析time这⼀列时,会⾃作主张在前⾯加上⼀个当前⽇期。

结果:

name time date

0 'Bob' 2019-10-17 21:33:30 2019-10-10

1 'Jerry' 2019-10-17 21:30:15 2019-10-10

2 'Tom' 2019-10-17 21:25:30 2019-10-10

3 'Vince' 2019-10-17 21:20:10 2019-10-10

4 'Hank' 2019-10-17 21:40:1

5 2019-10-10

"""

【注】:read_csv()⽅法指定parse_dates会使得读取csv⽂件的时间⼤⼤增加

(3)、

df=pd.read_csv('./TestTime.csv',parse_dates=[['time','date']],infer_datetime_format=True)

print(df)

"""

infer_datetime_format=True可显著减少read_csv命令⽇期解析时间

"""

(4)、

df=pd.read_csv('./TestTime.csv',parse_dates=[['time','date']],infer_datetime_format=True,keep_date_col=True)

print(df)

"""

keep_date_col=True/False参数则是⽤来指定解析为⽇期格式的列是否保留下来,True保留,False不保留

本例中=True即原解析的列time和date被保留下来

结果:

time_date name time date

0 2019-10-10 21:33:30 'Bob' 21:33:30 2019-10-10

1 2019-10-10 21:30:15 'Jerry' 21:30:15 2019-10-10

2 2019-10-10 21:25:30 'Tom' 21:25:30 2019-10-10

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值