【问题标题】:Adding hour to date/time in pandas using conditions使用条件在熊猫中添加小时到日期/时间
【发布时间】:2020-12-09 19:06:39
【问题描述】:

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

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

我要做的是在日期介于 2020 年 3 月 14 日和 2020 年 7 月 11 日之间的时间上增加 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().

任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: python pandas dataframe datetime


    【解决方案1】:

    我们试试吧:

    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')
        )
    

    【讨论】:

    • 谢谢你,成功了。另一个问题,如果你有时间。是否可以在不使用年份的情况下执行上述操作?例如,所有年份的 3/14 到 11/07 都可以这样做,原因是代码可以适应多年,而不仅仅是 2020
    • 谢谢,最后一个问题:我正在尝试将每个 qaurtere 数据分离到一个单独的文件中,我正在使用以下内容,它有效:q1df = masterdf[(masterdf['Date'] >= 'Jan-01-2020') & (masterdf['Date']
    猜你喜欢
    • 2018-11-15
    • 2022-01-07
    • 2022-10-12
    • 2017-05-22
    • 2017-09-24
    • 2016-11-09
    • 2015-07-31
    • 1970-01-01
    • 2020-12-01
    相关资源
    最近更新 更多