【问题标题】:loc Funktion next valueloc 函数下一个值
【发布时间】:2020-04-14 00:43:39
【问题描述】:

.loc 函数有一点问题。 这是代码:

date = df.loc [df ['date'] == d] .index [0]

d 是特定日期(例如 21.11.2019)

问题是周末可能需要几天时间。在 date 列的数据框中,没有周末的值。 (仅包含工作日的日历日)

如果d 是周末,有什么办法让他第二天去?

我想要index.get_locmethod = bfill 之类的东西

有人知道如何为.loc 实现它吗?

【问题讨论】:

    标签: python pandas nearest-neighbor pandas-loc


    【解决方案1】:

    IIUC 您想将格式的日期:dd.mm.yyyy 移动到最近的星期一,如果它们恰好在周末,或者保持原样,以防它们是工作日。最有效的方法是在将 d 传递给 pandas.loc[...] 之前修改它,而不是寻找最近的邻居。

    我的意思是:

    import datetime
    
    d="22.12.2019"
    
    dt=datetime.datetime.strptime(d, "%d.%m.%Y")
    if(dt.weekday() in [5,6]):
        dt=dt+datetime.timedelta(days=7-dt.weekday())
    
    d=dt.strftime("%d.%m.%Y")
    

    输出:

    23.12.2019
    

    编辑

    为了在d 之后或之后获取第一个日期,它在您的数据框中有条目,请尝试:

    import datetime
    
    df['date']=pd.to_datetime(df['date'], format='%d.%m.%Y')
    
    dt=datetime.datetime.strptime(d, "%d.%m.%Y")
    
    d=df.loc[df ['date'] >= d, 'date'].min()
    
    dr.loc[df['date']==d]...
    ...
    

    【讨论】:

    • 我有一张股票回报表。我有一些活动,有时会在周末发生。我想查询活动日期的回报。那么你知道用下周一的退货来填满周末退货的方法吗?
    • 所以你想通过日期d(事件日期),并从pandas 取回最近的工作日的回报,对吧?所以周六、周日和周一,3 个不同的活动日期,您将获得相同的回报,对吧?
    • 我只想得到事件日期'd'的返回。如果这是不可能的,因为 d 是星期日或星期六,我希望第二天(星期一)返回。
    • 知道了,然后只需对d进行上述转换,然后再将其传递给pandas.loc[...]。它将在工作日保持d 不变,在周末它将移动到最近的星期一
    • 谢谢。但是像圣诞节这样的日子我有问题。所以他们不在周末,但他们没有交易日。例如一个事件发生在 23.12,因此循环在 24.12 更改了日期,但这不是交易日。你看到问题了吗?
    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 2020-02-23
    • 1970-01-01
    • 2015-10-12
    • 2019-06-02
    • 2020-04-30
    • 2010-12-16
    • 2023-03-30
    相关资源
    最近更新 更多