从csv read-pandas解析时修改日期时间格式

时间:2016-10-10 13:52:46

标签: python date csv parsing pandas

我正在将csv文件(SimResults_Daily.csv)读入pandas,其结构如下:

"abc": "foo // bar"

等。 由于pandas parse_dates无法读取日期时间格式,我发现我可以使用命令:#, Job_ID, Date/Time, value1, value2, 0, ID1, 05/01 24:00:00, 5, 6 1, ID2, 05/02 24:00:00, 6, 15 2, ID3, 05/03 24:00:00, 20, 21

我的代码目前是:

str.replace('24:','00:')

我应该在代码中的哪个位置实现dateparse = lambda x: pd.datetime.strptime(x, '%m-%d %H:%M:%S') df = pd.read_csv('SimResults_Daily.csv', skipinitialspace=True, date_parser=dateparse, parse_dates=['Date/Time'], index_col=['Date/Time'], usecols=['Job_ID', 'Date/Time', 'value1', 'value2', header=0) 命令?

1 个答案:

答案 0 :(得分:2)

您可以使用:

replace

还可以添加另一个带有year - dateparse = lambda x: x.replace('24:','00:').replace(' ','/1900 ') df = pd.read_csv(io.StringIO(temp), skipinitialspace=True, date_parser=dateparse, parse_dates=['Date/Time'], index_col=['Date/Time'], usecols=['Job_ID', 'Date/Time', 'value1', 'value2'], header=0) print (df) Job_ID value1 value2 Date/Time 1900-05-01 ID1 5 6 1900-05-02 ID2 6 15 1900-05-03 ID3 20 21 的解决方案:

dateparse = lambda x: x.replace('24:','00:').replace(' ','/2016 ')

df = pd.read_csv(io.StringIO(temp),
    skipinitialspace=True,
    date_parser=dateparse,
    parse_dates=['Date/Time'],
    index_col=['Date/Time'],
    usecols=['Job_ID', 'Date/Time', 'value1', 'value2'],
    header=0)

print (df)
           Job_ID  value1  value2
Date/Time                        
2016-05-01    ID1       5       6
2016-05-02    ID2       6      15
2016-05-03    ID3      20      21
@SessionAttributes