Search code examples
pythonpandasdate-conversion

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())

Gives a result without applying my date parser

into myDateParser with  10/02/2018
nd= 181002
         Date        Action    ...    Fees & Comm    Amount
0  10/02/2018           Buy    ...          $3.95  -$281.24
1  10/02/2018  Sell to Open    ...          $5.60   $184.40
2  10/02/2018          Sell    ...          $3.99  $2799.59
3  10/02/2018  Buy to Close    ...          $5.60  -$735.60
4  10/02/2018           Buy    ...          $3.95  -$319.95

[5 rows x 8 columns]

Clearly I don't understand the instructions from the https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html page


Solution

  • I think you are looking for converters

    pd.read_csv(r'File.csv', converters ={'Data':myDateParser}) 
    
         Data
    0  181002
    1  181002
    2  181002
    3  181002
    

    Also check date_parser here