字符串到日期时间的转换 Pandas - 什么都试过了

Conversion of Strings to Datetime Pandas - tried everything

我知道有很多类似的问题,但我很确定我已经尝试了我找到的所有方法

数据:

    TimeStamp
    10:34:30
    10:35:30
    10:36:30
    10:37:30

我有两个不同的 .csv 文件,我正在尝试比较两个文件的时间以确定进一步的操作。

我想用.dt.hour.dt.min来比较时间。这是我尝试过的: 类型始终保持为 str 或 float,并且 .dt.hour 或 .dt.min 不起作用

    def csv_to_df(path, filename):
        dateparse = lambda x: pd.datetime.strptime(x, '%H:%M:%S')
        df = pd.read_csv(path + filename, skipinitialspace = True, parse_dates = True, date_parser = dateparse)
        return df

后来我也尝试使用pd.to_datetime进行转换。那也没用。

    df_sr4500.TimeStamp=pd.to_datetime(df_sr4500.TimeStamp).dt.time
    print(df_sr4500.TimeStamp[1].dt.hour)

    ERROR: AttributeError: 'datetime.time' object has no attribute 'dt'

IIUC

df.TimeStamp=pd.to_datetime(df.TimeStamp).dt.time

df.TimeStamp[1]
Out[115]: datetime.time(10, 35, 30)

df.TimeStamp[1].hour

Out[119]: 10

如果您需要转换新的列小时数

df.TimeStamp.apply(lambda x : x.hour)
Out[122]: 
0    10
1    10
2    10
3    10
Name: TimeStamp, dtype: int64

df.TimeStamp = pd.to_datetime(df_sr4500.TimeStamp) 就足够了。

要从此列中获取小时或分钟,您需要以下内容:

[i.hour for i in df.TimeStamp]

注意:.dt访问单个项目,但您正尝试使用整个系列访问它。