python - 使用 pandas to_datetime 时如何定义格式?

标签 python pandas datetime

我想根据具有以下格式的 testresult.csv 文件绘制 RESULT vs TIME,但我无法正确定义 TIME 列的数据类型。

TIME,RESULT  
03/24/2016 12:27:11 AM,2  
03/24/2016 12:28:41 AM,76  
03/24/2016 12:37:23 AM,19  
03/24/2016 12:38:44 AM,68  
03/24/2016 12:42:02 AM,44  
...

要读取csv文件,这是我写的代码: raw_df = pd.read_csv('testresult.csv', index_col=None, parse_dates=['TIME'], infer_datetime_format=True)
此代码有效,但速度极慢,我认为 infer_datetime_format 需要时间。所以我尝试先默认读取csv,然后使用to_datetime()将对象dtype'TIME'转换为datetime dtype,我希望通过定义格式,它可以加快速度.

raw_df =  pd.read_csv('testresult.csv')
raw_df.loc['NEWTIME'] = pd.to_datetime(raw_df['TIME'], format='%m/%d%Y %-I%M%S %p')

此代码报错:

"ValueError: '-' is a bad directive in format '%m/%d%Y %-I%M%S %p'"

最佳答案

您传递的格式无效。 %I 之间的破折号不应该存在。

df['TIME'] = pd.to_datetime(df['TIME'], format="%m/%d/%Y %I:%M:%S %p")

这会将您的 TIME 列转换为日期时间。


或者,您可以调整您的 read_csv 调用来执行此操作:

pd.read_csv('testresult.csv', parse_dates=['TIME'], 
    date_parser=lambda x: pd.to_datetime(x, format='%m/%d/%Y %I:%M:%S %p'))

同样,这使用了适当的格式而没有额外的 -,但它也将格式传递给了 date_parser。参数而不是让 pandas 尝试使用 infer_datetime_format 参数来猜测它。

关于python - 使用 pandas to_datetime 时如何定义格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36848514/

相关文章:

python - 如何安装支持 Swig 的 Python 扩展 (QuickFix)

python - Django pip安装mysqlclient错误

python - 当列名不同时如何将数据框附加到另一个数据框(具有相同的列大小)

python - 使用 glob 重复列读取多个文件

mysql - 在mysql中将秒转换为日期时间

linux - 在 bash shell 脚本中是否有通常用于比较时间的命令?

python - 如何测试顶层窗口是否打开?

python - 在 Flask 中读取 CSV 文件并迭代 Jinja2

python - AttributeError : Can only use . 带有字符串值的 str 访问器,它在 pandas (Python) 中使用 np.object_ dtype

java - 从字符串转换日期带来错误的值