使用Pandas从Excel到Python读取日期时间

使用Pandas从Excel到Python读取日期时间,python,excel,pandas,datetime,types,Python,Excel,Pandas,Datetime,Types,我试图从一个Excel文件中读取数据,该文件被转换为python,然后被拆分为数字(整数和浮点)和其他所有内容。有许多不同类型的列 我现在把数据带进来了 pd.read_excel 然后用 DataFrame.select_dtypes("number") 当用户上传一个时间(12:30:00)时,他们希望它被识别为一个时间。但是python(目前)将其视为数据类型对象 如果我用parse_dates指定列,那么它就可以工作,但是因为我事先不知道数据是什么,所以理想情况下我希望自动完成。我已

我试图从一个Excel文件中读取数据,该文件被转换为python,然后被拆分为数字(整数和浮点)和其他所有内容。有许多不同类型的列

我现在把数据带进来了

pd.read_excel
然后用

DataFrame.select_dtypes("number")
当用户上传一个时间(12:30:00)时,他们希望它被识别为一个时间。但是python(目前)将其视为数据类型对象

如果我用parse_dates指定列,那么它就可以工作,但是因为我事先不知道数据是什么,所以理想情况下我希望自动完成。我已经尝试过将parse_dates=True设置为True,但似乎没有什么不同

我不确定上传文件后是否有办法识别数据时间。不过,我还是希望在不必指定列的情况下完成此操作(因此可以转换的任何内容都是


非常感谢

如果您的数据只包含一列数据类型为
object
(我假设它是一个字符串),您可以执行以下操作:

1) 使用数据类型
对象过滤列

import pandas as pd
datatime_col = df.select_dtypes(object)
2) 将其转换为秒

datetime_col_in_seconds = pd.to_timedelta(datatime_col.loc[0]).dt.total_seconds()
然后,您可以将转换后的列重新附加到原始数据和/或执行任何您想要的处理

最终,您可以将其转换回datetime

datetime_col = pd.to_datetime(datetime_col_in_seconds, unit='s')
如果您有多个带有dtype对象的列,您可能需要进行更多的预处理,但我想这是开始处理特定情况的一个好方法。

这就是我需要的

for column_name in df.columns:
    try:
        df.loc[:, column_name] = pd.to_timedelta(df.loc[:, column_name].astype(str))
    except ValueError:
        pass
这将尝试将每一列转换为timedelta格式。如果无法转换,则返回一个值错误并移到下一列


运行后,将转换可识别为timedelta格式的任何列

我忘了说,但用户可以上传任意数量的列。只要他们都是数据类型对象(即字符串),建议的方法应该可以工作。只需对从df.select\u dtypes(object)命令获得的所有列执行此操作。比如for循环之类的,它们不是同一类型的。因此,时间将与数字和字符串混合在一起。