指定由pandas读入的日期格式

时间:2017-11-13 19:27:43

标签: python python-3.x pandas datetime

我正在使用pandas从csv文件中读取多组数据。有没有办法用read_csv指定要读入的数据的日期格式?

例如,我有一个数据文件,其日期时间列的格式如下:

d/m/y h:mm

和另一种格式如下:

yyyy-mm-dd HH:MM:ss

我想读取这些文件,然后匹配第二个日期格式。然后我可以使用to_datetime来确保列格式为日期时间格式并且可以用作pandas索引。有没有办法指定传入格式或使用to_datetime或read_csv更改每个格式的传出格式?最终目标是连接这些不同的数据帧,以便日期时间索引合并。

1 个答案:

答案 0 :(得分:0)

我创建一个名为{strong> table.csv 的csv文件,以;

分隔
date;numbers
1/1/19 9:9;1
25/12/18 11:11;2
;
date;numbers
2019-01-02 09:09:09;3
2018-12-26 11:11:11;4

希望此代码可帮助您了解date_parser在不同的formats中的日期:

import pandas as pd

fin = 'table.csv'

# NORMAL
dfA = pd.read_csv(fin, header=0, sep=';', nrows=2)
dfB = pd.read_csv(fin, header=4, sep=';', nrows=2)
dfN = pd.concat([dfA,dfB], ignore_index=True)

# PARSING DATE for each DataFrame with the
# date_parser
dfA = pd.read_csv(fin, header=0, sep=';', nrows=2, 
    parse_dates=['date'], 
    date_parser=lambda x: pd.datetime.strptime(x, '%d/%m/%y %H:%M'))

dfB = pd.read_csv(fin, header=4, sep=';', nrows=2, 
    parse_dates=['date'], 
    date_parser=lambda x: pd.datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))

dfP = pd.concat([dfA,dfB], ignore_index=True)


print("normal", dfN['date'].dtype)
print("parser", dfP['date'].dtype)
print()
print(dfN)
print()
print(dfP)