首页 > 解决方案 > 替换DataFrame中时间戳的日期部分

问题描述

我在 DataFrame df 中有两列:

date        time
5/25/2020.  5/25/2020 11:00:28 AM
5/6/2021.   7/7/2021. 11:00:28 AM

现在我想将新列创建为reference_time,它将具有日期列的日期部分和列时间的时间部分,并将时区附加为美国/中部。像这样:

date        time                         reference_time
5/25/2020.  5/25/2020 11:00:28 AM.       5/25/2021 11:00:28 AM US/Central 
5/6/2021.   7/7/2021. 11:10:28 AM        5/6/2021  11:10:28 US/Central

有人可以帮助我如何干净地实现这一目标吗?谢谢。

标签: pythonpandasdataframe

解决方案


to_datetime使用和的日期时间解决方案Series.dt.tz_localize

df['reference_time'] = (pd.to_datetime(df['date'] + ' ' + df['time'].str.split(n=1).str[1])
                          .dt.tz_localize('US/Central'))
print (df)
        date                   time            reference_time
0  5/25/2020  5/25/2020 11:00:28 AM 2020-05-25 11:00:28-05:00
1   5/6/2021   7/7/2021 11:00:28 AM 2021-05-06 11:00:28-05:00

join by 字符串的解决方案+

df['reference_time'] = df['date'] + ' ' + df['time'].str.split(n=1).str[1] + ' US/Central'
print (df)
        date                   time                    reference_time
0  5/25/2020  5/25/2020 11:00:28 AM  5/25/2020 11:00:28 AM US/Central
1   5/6/2021   7/7/2021 11:00:28 AM   5/6/2021 11:00:28 AM US/Central

如果两列中已有日期时间:

df['reference_time'] = ((df['date'] + pd.to_timedelta(df['time'].dt.strftime('%H:%M:%S')))
                               .dt.tz_localize('US/Central'))
print (df)
        date                time            reference_time
0 2020-05-25 2020-05-25 11:00:28 2020-05-25 11:00:28-05:00
1 2021-05-06 2021-07-07 11:00:28 2021-05-06 11:00:28-05:00

推荐阅读