pandas pd.to_日期时间与多种格式

pbpqsu0x  于 2023-06-04  发布在  其他
关注(0)|答案(4)|浏览(264)

我需要从多种时间格式中获取时间戳,例如:

df['date'] = [29.05.2023 01:00:00, 
              29.05.2023, 
              28.05.2023 23:00:00]

在每天的00:00:00,时间丢失,仅记录日期。我需要时间戳看起来像这样:

df['date'] = [29.05.2023 01:00:00, 
              29.05.2023 00:00:00, 
              28.05.2023 23:00:00]
qrjkbowd

qrjkbowd1#

使用带有dayfirst=True参数的to_datetime,对于最终输出DD.MM.YYYY HH:MM:SS,使用Series.dt.strftime

df = pd.DataFrame({'date':['29.05.2023 01:00:00', 
                           '29.05.2023', 
                           '28.05.2023 23:00:00',
                           '4.10.2023']})

df['date'] = pd.to_datetime(df['date'], dayfirst=True).dt.strftime('%d.%m.%Y %H:%M:%S')
print (df)
                  date
0  29.05.2023 01:00:00
1  29.05.2023 00:00:00
2  28.05.2023 23:00:00
3  04.10.2023 00:00:00
jv2fixgn

jv2fixgn2#

试着做:

df['date'] = pd.to_datetime(df['date'])

在许多情况下,它将工作在所有熟悉的格式,您可以尝试添加:,format='mixed':

df['date'] = pd.to_datetime(df['date'], format='mixed')
dsf9zpds

dsf9zpds3#

您可以通过转换为混合格式的datetime,然后将输出格式设置为您选择的格式:

df['date'] = pd.to_datetime(df["date"], format='mixed').dt.strftime('%d.%m.%Y %H:%M:%S')

输出:

date
0   29.05.2023 01:00:00
1   29.05.2023 00:00:00
2   28.05.2023 23:00:00
hc8w905p

hc8w905p4#

Pandas pd.to_datetime() 通过三个选项支持日期时间不一致
错误'ignore','raise','coerce'},默认值'raise'
如果为'raise',则无效的解析将引发异常。
如果为'coerce',则无效解析将被设置为NaT。
如果为'ignore',则无效的解析将返回输入。
在这种情况下,可以使用coerce
步骤1:创建 Dataframe 与所有不一致的datetime格式字符串

df = pd.DataFrame({'date': ['29.05.2023 01:00:00', '29.05.2023', '28.05.2023 23:00:00']})

步骤2:将它们转换为datetime对象

df['date'] = pd.to_datetime(df['date'], format='%d.%m.%Y %H:%M:%S', errors='coerce')

第三步:然后,可以用默认值填充缺少的部分; 00:00:00或其他特定时间。

df['date'] = df['date'].dt.strftime('%d.%m.%Y %H:%M:%S').fillna(df['date'].dt.strftime('%d.%m.%Y 00:00:00'))

然后,输出将是一致的。

0    29.05.2023 01:00:00
1    29.05.2023 00:00:00
2    28.05.2023 23:00:00
Name: date, dtype: object

相关问题