Python 使用pandas将时间读取为字符串

Python 使用pandas将时间读取为字符串,python,pandas,Python,Pandas,我正在用python3中的熊猫阅读excel。excel有一个列,记录每个记录花费的时间(以分钟和秒为单位)。第二列的内容是3:52,它是在特定步骤中花费的3分52秒,而不是熊猫df处理的“3:52:00 AM”。有办法避免吗? 以下是数据在excel中的外观: 在上面的excel中,56:52:00实际上是56分52秒(同样如此)。excel列中的数据严格采用标题时间(mm:ss)中定义的格式。。在某些表单中可能是时间(hh:mm:ss) 以下是我创建df的方式: >>>

我正在用python3中的熊猫阅读excel。excel有一个列,记录每个记录花费的时间(以分钟和秒为单位)。第二列的内容是3:52,它是在特定步骤中花费的3分52秒,而不是熊猫df处理的“3:52:00 AM”。有办法避免吗? 以下是数据在excel中的外观:

在上面的excel中,56:52:00实际上是56分52秒(同样如此)。excel列中的数据严格采用标题时间(mm:ss)中定义的格式。。在某些表单中可能是时间(hh:mm:ss)

以下是我创建df的方式:

>>> df = xl.parse(sheet_name,header=None,encoding="utf-8", skiprows=3,usecols={1})
>>> df
                       1
0               03:52:00
1               04:52:00
2               05:52:00
3               06:52:00
4               07:52:00
..                   ...
115  1900-01-02 08:52:00
116  1900-01-02 09:52:00
117  1900-01-02 10:52:00
118  1900-01-02 11:52:00
119             00:52:00

>>> df.dtypes
1    object
dtype: object


读取_excel()
时,可以使用
转换器
kwarg,并指定要转换类型以使用的列标题名称

import pandas as pd
df = pd.read_excel('Data.xlsx', converters={'col':str})
dtype
kwarg

import pandas as pd
df = pd.read_excel('Data.xlsx', dtype={'col':str})

这应该对你有用。当pandas使用pandas.read_excel()读取excel文件时,它会将持续时间作为时间(HH:MM:SS)输入,其中3作为小时,52作为分钟,或者作为日期时间(YYYY-MM-DD HH:MM:SS)

代码将创建一个函数,通过从时间中减去午夜(date.min)并将其除以60,以分钟和秒(而非小时和分钟)表示持续时间,从而将该时间转换为时间增量(HH:MM:SS,3分52秒)

      0      1
0     1   00:03:52    (timedelta object)
118   1   00:56:52    (timedelta object)
119   1   00:00:52    (timedelta object)
您可以使用timedelta模块修改持续时间的显示方式。可能有一种更好的方法将持续时间作为时间增量读取,但我不确定如何执行该操作

import pandas as pd
from datetime import datetime, date

df=pd.read_excel("filepath")
def convert_to_duration(timeobj):
    if type(timeobj) == datetime:
        datetimemin = datetime.strptime("1899-12-31 00:00:00","%Y-%m-%d %H:%M:%S")
        return (timeobj - datetimemin)/60
    if type(timeobj) == time:    
        return (datetime.combine(date.min,timeobj)-datetime.min)/60

df[1]=df[1].apply(convert_to_duration)
df

你是怎么读熊猫的?Plaese提供代码。您希望数据类型是日期时间而不是日期时间。能否共享您的代码?调用read\u csv时是否传递解析日期?我读取excel的方式是:df=xl。parse(sheet\u name,header=None,encoding=“utf-8”)Dan,您能帮助我在读取excel时如何使用timedelta吗?我已经尝试过使用转换器/dtype。他们在这里没有帮助。谢谢分享。我知道它在做什么,但在我的例子中,col1被读取为对象数据类型,而不是时间字段。类似56:52:00的值表示56分52秒转换为1/2/1900 8:52:00 AM(记录118)。该函数将timeobj作为输入,但实际情况并非如此。可能我会先尝试转换:>>>df[1]=df[1]。应用(将持续时间转换为持续时间)类型错误:combine()参数2必须是datetime.time,而不是str
import pandas as pd
from datetime import datetime, date

df=pd.read_excel("filepath")
def convert_to_duration(timeobj):
    if type(timeobj) == datetime:
        datetimemin = datetime.strptime("1899-12-31 00:00:00","%Y-%m-%d %H:%M:%S")
        return (timeobj - datetimemin)/60
    if type(timeobj) == time:    
        return (datetime.combine(date.min,timeobj)-datetime.min)/60

df[1]=df[1].apply(convert_to_duration)
df