pd.read_csv()方法的參數:parse_dates使用詳解

parse_dates參數作用:

將csv中的時間字符串轉換成日期格式

1、準備數據

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_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: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這一列時,會自作主張在前面加上一個當前日期。
結果:
      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:15   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
3 2019-10-10 21:20:10  'Vince'  21:20:10  2019-10-10
4 2019-10-10 21:40:15   'Hank'  21:40:15  2019-10-10
"""
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章