如何在python/pandas中将具有不同数字的小时/分钟列转换为datetime对象?

2024-05-19 09:15:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从两个数据帧列中创建一个关于pandas的datetime列,一个包含日期,另一个包含时间

它们的格式如下:

Date       Time
20110101    53
20110102   253
20110103   653
20110104  1053

我想把它们都转换成字符串,如下所示:

df_shortened["datetime"] = df_shortened['date'].dt.strftime('%Y-%m-%d')  + " " + df_shortened['Time'].astype(str)

得到这样的字符串

0          2011-01-01 53
1         2011-01-01 153
2         2011-01-01 253
3         2011-01-01 353
4         2011-01-01 453

然后尝试将结果列转换为datetime对象,如下所示

df["dtcolumn"] = pd.to_datetime(df["dtcolumn"], format='%Y%m%d %H%M')

这是行不通的。我想这是因为数字的数量不同,我不确定

ValueError: time data '2011-01-01 53' does not match format '%Y%m%d %H%M' (match)

如果我强制出错,它只会将其保留为字符串。我如何解决它?我需要填短一些的号码吗?它如何从分钟中识别小时


Tags: 数据字符串formatpandasdfdatetimedatetime
1条回答
网友
1楼 · 发布于 2024-05-19 09:15:18

使用zfill和字符串操作尝试此操作:

df['datetime'] = pd.to_datetime(df['Date'].astype(str) + ' ' + 
                                df['Time'].astype(str).str.zfill(4), format='%Y%m%d %H%M')

输出:

       Date  Time            datetime
0  20110101    53 2011-01-01 00:53:00
1  20110102   253 2011-01-02 02:53:00
2  20110103   653 2011-01-03 06:53:00
3  20110104  1053 2011-01-04 10:53:00

相关问题 更多 >

    热门问题