在python中将Dataframe列转换为时间格式

Posted

技术标签:

【中文标题】在python中将Dataframe列转换为时间格式【英文标题】:Convert Dataframe column to time format in python 【发布时间】:2018-05-08 10:41:26 【问题描述】:

我有一个如下所示的数据框列:

它读取M:S.MS。如何将其转换为M:S:MS timeformat,以便将其绘制为时间序列图?

如果我按原样绘制,python 会抛出 Invalid literal for float() 错误。

注意 :这个数据框包含一小时的数据。 Values between 0:0.0 - 59:59.9

【问题讨论】:

【参考方案1】:
df = pd.DataFrame('date':['00:02.0','00:05:0','00:08.1'])

print (df)
      date
0  00:02.0
1  00:05:0
2  00:08.1

可以转换成datetime:

df['date'] = pd.to_datetime(df['date'], format='%M:%S.%f')
print (df)
                     date
0 1900-01-01 00:00:02.000
1 1900-01-01 00:00:05.000
2 1900-01-01 00:00:08.100

timedeltas:

df['date'] = pd.to_timedelta(df['date'].radd('00:'))
print (df)
             date
0        00:00:02
1        00:00:05
2 00:00:08.100000

编辑:

用于自定义日期:

date = '2015-01-04'

td = pd.to_datetime(date) - pd.to_datetime('1900-01-01')
df['date'] = pd.to_datetime(df['date'], format='%M:%S.%f') + td
print (df)
                     date
0 2015-01-04 00:00:02.000
1 2015-01-04 00:00:05.000
2 2015-01-04 00:00:08.100

【讨论】:

感谢您的回复。但是有没有办法将所有行的“1900-01-01”更改为另一个日期? 感谢您的回答。这就是我一直在寻找的。但是,您也可以编辑以添加自定义时间吗?谢谢 谢谢jezrael,我真的很感激。这就是我一直在寻找的答案。 我第一次看到radd

以上是关于在python中将Dataframe列转换为时间格式的主要内容,如果未能解决你的问题,请参考以下文章

在 Python Pandas DataFrame 中将 timedelta64[ns] 列转换为秒

在熊猫数据框中将纪元列值转换为时间

在 Spark 中将字符串字段转换为时间戳的更好方法

在 Impala 中将连接的字符串转换为时间戳

如何在 DB2 中将 varchar 转换为时间戳

一文速学-Pandas中DataFrame转换为时间格式数据与处理