为什么 pandas read_csv 没有使用我的日期解析器?

Why isn't pandas read_csv using my dateparser?

import numpy as np
import pandas as pd

def myDateParser(d):
    #in format: 10/02/2018, out format: 181002
    print("into myDateParser with ",d)
    return(d[8:]+d[0:2]+d[3:5])

nd=myDateParser('10/02/2018')
print("nd=",nd)


rawDataFile="Transactions.CSV"
data = pd.read_csv(rawDataFile, header=1, usecols=[0,1,2,3,4,5,6,7], 
parse_dates=True, date_parser=myDateParser) 
print(data.head())

没有应用我的日期解析器就给出了结果

into myDateParser with  10/02/2018
nd= 181002
         Date        Action    ...    Fees & Comm    Amount
0  10/02/2018           Buy    ...          .95  -1.24
1  10/02/2018  Sell to Open    ...          .60   4.40
2  10/02/2018          Sell    ...          .99  99.59
3  10/02/2018  Buy to Close    ...          .60  -5.60
4  10/02/2018           Buy    ...          .95  -9.95

[5 rows x 8 columns]

显然我不理解 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html 页面上的说明

我想你在找 converters

pd.read_csv(r'File.csv', converters ={'Data':myDateParser}) 

     Data
0  181002
1  181002
2  181002
3  181002

同时勾选 date_parser here

使用内置方法:

  • 无需创建自定义函数,使用字符串切片。
df = pd.read_csv('data.csv', parse_dates=['Date'])
df.Date = df.Date.apply(lambda x: x.strftime('%y%m%d'))

      Date            Action    Fees & Comm    Amount
0   181002               Buy          .95   -281.24
1   181002      Sell to Open          .60    184.40
2   181002              Sell          .99   2799.59
3   181002      Buy to Close          .60   -735.60
4   181002               Buy          .95   -319.95