Reputation: 127
I am trying to parse dates while I am reading my data from cvs file. The command that I use is
df = pd.read_csv('/Users/n....', names=names, parse_dates=['date']) )
And it is working on my files generally.
But I have couple of data sets which has variety in date formats. I mean it has date format is like that (09/20/15 09:59 )
while it has another format in other lines is like that ( 2015-09-20 10:22:01.013 )
in the same file. And the command that I wrote above doesn't work on these file. It is working when I delete (parse_dates=['date']), but that time I can't use date column as datetime
format, it reads that column as integer . I would be appreciate anyone could answer that!
Upvotes: 3
Views: 13188
Reputation: 53
Like this:
df = pd.read_csv(file, names=names)
df['date'] = pd.to_datetime(df['date'])
Upvotes: 3
Reputation: 20583
Pandas read_csv
accepts date_parser
argument which you can define your own date parsing function. So for example in your case you have 2 different datetime formats you can simply do:
import datetime
def date_parser(d):
try:
d = datetime.datetime.strptime("format 1")
except ValueError:
try:
d = datetime.datetime.strptime("format 2")
except:
# both formats not match, do something about it
return d
df = pd.read_csv('/Users/n....',
names=names,
parse_dates=['date1', 'date2']),
date_parser=date_parser)
You can then parse those dates in different formats in those columns.
Upvotes: 5