在 pandas read_csv 中解析以毫秒为单位的日期

apo*_*sis 2 python datetime parsing python-3.x pandas

我的.csv看起来像这样:

     date      time  
0    20190101  181555700  
1    20190101  181545515
Run Code Online (Sandbox Code Playgroud)

其中格式为YYYYMMDDfordateHHMMSSMMMfor time(最后一个 MMM 是毫秒)。例如第一行是2019-01-01 18:15:55.700

有没有办法直接解析它而pd.read_csv()不必稍后转换它?仅使用parse_dates不起作用,因为它无法识别格式。我想要的是在我的数据框中有一列,时间戳正确解析为

    timestamp
0   2019-01-01 18:15:55.700
Run Code Online (Sandbox Code Playgroud)

Qua*_*ang 5

您可以使用to_timedeltawithunit选项将您的变成timetimedelta添加到date

df = pd.read_csv('file.csv', parse_dates=['date'])
df['date'] = df.date + pd.to_timedelta(df.time, unit='ms')
Run Code Online (Sandbox Code Playgroud)

或者:

df = pd.read_csv('file.csv')
df['date'] = pd.to_datetime(df.date) + pd.to_timedelta(df.time, unit='ms')
Run Code Online (Sandbox Code Playgroud)

输出:

                     date       time
0 2019-01-03 02:25:55.700  181555700
1 2019-01-03 02:25:45.515  181545515
Run Code Online (Sandbox Code Playgroud)

每条评论更新

df['date'] = pd.to_datetime(df.date.astype(str)+df.time.astype(str), format='%Y%m%d%H%M%S%f')
Run Code Online (Sandbox Code Playgroud)

输出:

                     date       time
0 2019-01-01 18:15:55.700  181555700
1 2019-01-01 18:15:45.515  181545515
Run Code Online (Sandbox Code Playgroud)