gpt4 book ai didi

python - 使用条件在 Pandas 中添加小时到日期/时间

转载 作者:行者123 更新时间:2023-12-04 08:26:42 24 4
gpt4 key购买 nike

我有一个带有日期/时间列的数据框

0    2020-01-07 09:00:00
1 2020-01-15 13:00:00
2 2020-01-22 14:00:00
3 2020-01-30 09:00:00
4 2020-02-05 14:00:00
5 2020-02-12 10:00:00
6 2020-05-12 07:00:00
7 2020-05-12 08:00:00
8 2020-05-12 09:00:00
9 2020-05-12 10:00:00
10 2020-05-12 11:00:00
11 2020-05-12 12:00:00
12 2020-05-12 13:00:00
13 2020-05-12 14:00:00
14 2020-05-12 15:00:00
15 2020-05-12 16:00:00
16 2020-07-02 08:00:00
17 2020-07-02 09:00:00
18 2020-07-02 10:00:00
19 2020-07-02 11:00:00
20 2020-07-02 12:00:00
我想要做的是在日期在 3/14/2020 和 11/07/2020 之间的时间上增加 2 小时,并在其他地方的时间上增加 1 小时。
我已经能够使用以下方法添加小时:
df['Date/Time'] = df['Date/Time'] + pd.DateOffset(hours=1)
但是,我似乎无法弄清楚如何通过 df.loc 做到这一点。
我尝试过的:
df.loc[(df['Date/Time'] >= start_date) & (df['Date/Time'] <= end_date), ['Date/Time']] = (['Date/Time'] + pd.DateOffset(hours=1))
我还尝试使用 For 和嵌套的 IF 语句遍历数据帧,但这会引发以下错误。
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
任何帮助,将不胜感激。谢谢

最佳答案

咱们试试吧:

start_time, end_time = '3/14/2020', '11/07/2020'

df['Date/Time'] += np.where(df['Date/Time'].between(start_time, end_time),
pd.Timedelta('2H'),
pd.Timedelta('1H')
)
start_time, end_time = 314, 1107

month_day = df['Date/Time'].dt.month * 100 + df['Date/Time'].dt.day
df['Date/Time'] += np.where(month_day.between(start_time, end_time),
pd.Timedelta('2H'),
pd.Timedelta('1H')
)

关于python - 使用条件在 Pandas 中添加小时到日期/时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65223298/

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