python - 从 csv 读取解析时修改日期时间格式 - pandas

标签 python date csv parsing pandas

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

#, 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 

等等。 由于 pandas parse_dates 无法读取日期时间格式,我发现可以使用命令: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)

我应该在代码中的什么位置实现str.replace命令?

最佳答案

您可以使用:

import pandas as pd
import io

temp=u"""#,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"""

dateparse = lambda x: pd.datetime.strptime(x.replace('24:','00:'), '%m/%d  %H:%M:%S')

#after testing replace io.StringIO(temp) to filename
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
<小时/>

还可以添加另一个带有双 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

关于python - 从 csv 读取解析时修改日期时间格式 - pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39959925/

相关文章:

python - 将 2D 元素的大列表转换为 3D NumPy 数组 - 内存问题

java - 使用时区java将字符串转换为适当的日期

javascript - moment.js : Deprecation warning: value provided is not in a recognized RFC2822 or ISO format

python - 在同一行的 csv 文件中获取值

php - 如何在 PHP 中解析列中具有多行数据的 csv

python - 如何推荐下一个成就

python - 如何将中间件添加到 Pythons 记录器

mysql - 通过php将csv导入mysql第一行有0

python - 限制 Python 进程内存使用

Mysql - 按大于或小于当前时间的日期对记录进行分组 now() mysql