将字符串 1-24 转换为日期时间格式
Converting string 1-24 to datetime format
我有一个带有时间戳的数据集(模拟输出)如下:
|Date/Time | 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)
如果我能得到这方面的帮助,我将不胜感激。
我尝试了以下link中提到的方法,但它们不适用于我的情况:
How can I convert the time in a datetime string from 24:00 to 00:00 in Python?
@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
就我个人而言,我会在 date/time 列中添加一年。
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
我有一个带有时间戳的数据集(模拟输出)如下: |Date/Time | 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)
如果我能得到这方面的帮助,我将不胜感激。
我尝试了以下link中提到的方法,但它们不适用于我的情况: How can I convert the time in a datetime string from 24:00 to 00:00 in Python?
@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
就我个人而言,我会在 date/time 列中添加一年。
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