python - 替换 DataFrame 中时间戳的日期部分

标签 python pandas 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

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

最佳答案

日期时间的解决方案 to_datetimeSeries.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

通过+连接字符串的解决方案:

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

关于python - 替换 DataFrame 中时间戳的日期部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66685206/

相关文章:

python - 在 REST 框架中返回字典而不是数组

python - 在 Django 中生成带有内联摘要的列表/报告

python - 对齐两个数据框列并保留顺序(没有字典顺序重新排序

apache-spark - 如何用新列覆盖 Spark 数据框中的整个现有列?

python - try except语句错误python

python - 根据列值合并多个数据帧时缺少列

python - 合并 strip 时间戳

python-3.x - 如何从python中的pandas数据帧中的列中提取关键字(字符串)

python - 找到数据帧中每一行的平均值并返回平均值结果

python - Pandas 数据框删除每个数字的第一行