首页 > 解决方案 > 将字符串 1-24 转换为日期时间格式

问题描述

我有一个时间戳如下的数据集(模拟输出):|日期/时间| BLOCK1:BEDROOM:Zone 工作温度 C| |---------|-------------------------------------- -------------------| |01:00:00 |23.8| |02:00:00 |23.6| |03:00:00 |23.2| |03:00:00 |23.2| |03:00:00 |23.2| |03:00:00 |23.2| |03:00:00 |23.2| |03:00:00 |23.2| |03:00:00 |23.2| |24:00:00 |23.7|

这只是一个例子。我有 365 天的输出。我正在尝试使用以下代码将其转换为 DateTime 格式:

data2['Date/Time'] = pd.to_datetime(data2['Date/Time'], format = '%m/%d %H:%M:%S')

但这给了我以下错误:

time data '01/01  24:00:00' does not match format '%m/%d %H:%M:%S' (match)

如果我能得到这方面的帮助,我将不胜感激。

我尝试了以下链接中提到的方法,但它们不适用于我的情况: 如何在 Python 中将日期时间字符串中的时间从 24:00 转换为 00:00?

标签: python-3.xpandaspython-datetime

解决方案


@anky 正确的是 24:00:00 应该是 00:00:00。

import pandas as pd


df = pd.DataFrame(['01/01 01:00:00', '01/01 24:00:00'], columns = ['Date/Time'])
df['Date/Time'] = pd.to_datetime(df['Date/Time'], format='%m/%d %H:%M:%S')
print(df)

抛出此错误:

ValueError: time data '01/01 24:00:00' does not match format '%m/%d %H:%M:%S' (match)

解决此问题的一种方法是将 24:00:00 替换为 00:00:00。

import pandas as pd


df = pd.DataFrame(['01/01 01:00:00', '01/01 24:00:00'], columns = ['Date/Time'])
df['Date/Time'] = df['Date/Time'].replace({'24:00:00': '00:00:00'}, regex=True)
print(df)

        Date/Time
0  01/01 01:00:00
1  01/01 00:00:00

另一种方法是忽略错误。

import pandas as pd


df = pd.DataFrame(['01/01 01:00:00', '01/01 24:00:00'], columns = ['Date/Time'])
df['Date/Time'] = pd.to_datetime(df['Date/Time'], format='%m/%d %H:%M:%S', errors='ignore')
print(df)

        Date/Time
0  01/01 01:00:00
1  01/01 24:00:00

就个人而言,我会在日期/时间列中添加一年。

import pandas as pd


df = pd.DataFrame(['01/01 01:00:00', '01/01 24:00:00'], columns = ['Date/Time'])
df['Date/Time'] = df['Date/Time'].replace({'24:00:00': '00:00:00'}, regex=True)
df['Date/Time'] = pd.to_datetime('2020-' + df['Date/Time'])
print(df)

           Date/Time
0 2020-01-01 01:00:00
1 2020-01-01 00:00:00

推荐阅读