首页 > 解决方案 > 使用 Pandas 在 Python 中解析时间戳不会返回 datetime64

问题描述

我正在尝试将 csv 文件解析为 dataFrame,因为我需要对时间戳进行一些分析。csv 文件结构良好,我可以使用 pd.read_csv 毫无问题地读取它:

import pandas as pd
import datetime as dt

df = pd.read_csv('trip_data.csv', low_memory=False, parse_dates=['datetime'], infer_datetime_format=True)

但是,即使将 parse_dates 和 infer_datetime_format 作为参数,我仍然会得到一个不解析文件时间戳的数据帧:

df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8771828 entries, 0 to 8771827
Data columns (total 3 columns):
UserID                   int64
datetime                 object
amount                   float64
dtypes: float64(1), int64(1), object(1)
memory usage: 1.1+ GB

因此,当我尝试获取最短日期时,例如:

print(df['datetime'].min())

我得到了一个不正确的答案,因为我可以看到我的 df 上的最小时间戳是 2018-01-01 00:08:26 并且我得到 2018-01-27 04:06:37 最低...我错过了什么吗,或者有没有办法以另一种方式将其转换为 datetime64 ?

这是我的 csv 文件的一个峰值:

UserID,datetime,amount
1,2018-01-01 00:21:05,5.8
1,2018-01-01 00:44:55,15.3
1,2018-01-01 00:08:26,8.3
1,2018-01-01 00:20:22,34.8
1,2018-01-01 00:09:18,16.55
1,2018-01-01 00:29:29,5.8
1,2018-01-01 00:38:08,12.35
1,2018-01-01 00:49:29,6.3

标签: pythonpandasdataframe

解决方案


您可以手动将列转换为日期时间

df['datetime'] = pd.to_datetime(df['datetime'])

进而

print(df['datetime'].min())

推荐阅读