pd.read_csv()方法的参数(parse_dates使用详解)

parse_dates参数作用:
将csv中的时间字符串转换成日期格式
1、准备数据
【pd.read_csv()方法的参数(parse_dates使用详解)】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

2、四种用法对比
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_datename 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:15'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这一列时,会自作主张在前面加上一个当前日期。 结果: nametimedate 0'Bob' 2019-10-17 21:33:302019-10-10 1'Jerry' 2019-10-17 21:30:152019-10-10 2'Tom' 2019-10-17 21:25:302019-10-10 3'Vince' 2019-10-17 21:20:102019-10-10 4'Hank' 2019-10-17 21:40:152019-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_datenametimedate 0 2019-10-10 21:33:30'Bob'21:33:302019-10-10 1 2019-10-10 21:30:15'Jerry'21:30:152019-10-10 2 2019-10-10 21:25:30'Tom'21:25:302019-10-10 3 2019-10-10 21:20:10'Vince'21:20:102019-10-10 4 2019-10-10 21:40:15'Hank'21:40:152019-10-10 """

    推荐阅读