将字符串 1-24 转换为日期时间格式

时间:2021-04-25 11:38:37

标签: python-3.x pandas python-datetime

我有一个带有时间戳的数据集(模拟输出),如下所示: |日期/时间 | 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)

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

我尝试了以下链接中提到的方法,但它们不适用于我的情况: How can I convert the time in a datetime string from 24:00 to 00:00 in Python?

1 个答案:

答案 0 :(得分:0)

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

ajax

抛出这个错误:

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)

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

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

另一种方法是忽略错误。

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