gpt4 book ai didi

python - 如何有效地替换 pandas 列中日期时间值的时间部分?

转载 作者:行者123 更新时间:2023-12-05 02:02:14 24 4
gpt4 key购买 nike

我有一个包含多个日期时间值的数据框。我想将这些的时间部分更改为数据框中所有观察值都相同的特定时间,但保留日期时间的日期部分。

我可以使用 datetime 包和 .replace() 函数用单个日期时间来做到这一点:

import datetime

dt_test=datetime.datetime(2020, 5, 17,21,30,15)
print(dt_test)

dt_test=dt_test.replace(hour=6,minute=0,second=0)

print(dt_test)

哪个返回:

2020-05-17 21:30:15
2020-05-17 06:00:00

我觉得我应该能够使用 .dt 运算符将其应用于整个列,但是当我尝试这样做时收到错误消息。

import pandas as pd
dates=[
datetime.datetime(2018,1,1,4,30,15),
datetime.datetime(2018,1,2,4,30,15),
datetime.datetime(2018,1,3,4,30,15),
datetime.datetime(2018,1,3,6,0,0),
datetime.datetime(2018,1,3,12,30,15),
datetime.datetime(2018,1,1,4,30,15),
datetime.datetime(2018,1,2,4,30,15),
datetime.datetime(2018,1,4,4,30,15),
datetime.datetime(2018,1,2,12,30,15),
datetime.datetime(2018,1,4,12,30,15),
]
ids=list(range(len(dates)))

df=pd.DataFrame(zip(ids,dates),columns=['id','date_time'])
df

返回:

    id  date_time
0 0 2018-01-01 04:30:15
1 1 2018-01-02 04:30:15
2 2 2018-01-03 04:30:15
3 3 2018-01-03 06:00:00
4 4 2018-01-03 12:30:15
5 5 2018-01-01 04:30:15
6 6 2018-01-02 04:30:15
7 7 2018-01-04 04:30:15
8 8 2018-01-02 12:30:15
9 9 2018-01-04 12:30:15

根据需要,'date_time' 列是 dtype:datetime64[ns](参见 this 问题)。

然后我尝试使用 pandas 的 .replace()使用 .dt 运算符的函数:

df['date_time'].dt.replace(hour=6,minute=0,second=0)
df

但我收到以下错误(使用 jupyter,如果重要的话):

---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-13-65a7bb8c3365> in <module>
----> 1 df['date_time'].dt.replace(hour=6,minute=0,second=0)
2 df

AttributeError: 'DatetimeProperties' object has no attribute 'replace'

我怎样才能有效地替换 pandas 列中日期时间变量的时间部分?

注意:我找到了this可以将所有日期的时间设置为午夜的问题,但时间对我来说很重要,不太可能是午夜。

最佳答案

对于 hour=0, minute=0, second=0,Pandas 有一个内置的:

df['date_time'].dt.normalize()

然后你可以转移:

df['date_time'].dt.normalize() + pd.Timedelta('01:02:03')

关于python - 如何有效地替换 pandas 列中日期时间值的时间部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65997618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com