【问题标题】:get before and after days based on 2 dataframes (date time )根据 2 个数据框(日期时间)获取前后天数
【发布时间】:2021-08-03 15:53:29
【问题描述】:

我有一个数据框,其格式(日期范围从 start="2018-09-09",end="2020-02-02"),值从 1 到 513

我有另一个格式的数据框(只有 3 个日期)

基于第二个数据框,我想要 2 个日期之前和 1 个日期之后我的意思是这个

【问题讨论】:

    标签: python pandas datetime data-cleaning


    【解决方案1】:

    已编辑:根据问题更正答案

    如果你这样做:

    keep = []
    for val in df2['value']:
        keep += [val-3, val-2, val-1, val]
    df_final = df1.take(keep)
    

    假设:您的 value 列始终从 1 开始并且是连续的。此外,它的数据类型是整数而不是字符串。

    它的作用:
    每个日期的行号(索引) = 该行的 value - 1,因为索引从 0 开始。
    因此,这仅保留value-3(2 天前)、value-2(1 天前)、value-1(df2 中的那一天)和value(1 天后)索引在keep 列表中。

    然后DataFrame.take(indices) 为我们完成这项工作,只从提到的DataFrame df1 中取出带有参数indices 中提到的索引的行,一个列表。

    【讨论】:

    • 您的代码仅在数据帧长度为 2 时有效,它不能回答我的问题
    • @sra 我用作示例的数据帧没有条件是任意数量的行长。无论您有多少行,该代码都应该工作。这是我的示例的链接,其中包含 5 行和 3 行:link
    • 我理解你的代码,但我的要求不是这样,对于 df2 中的每个日期,我需要提前 3 天和基于 df1 的 1 天,仅此而已。
    • 好的,我现在更好地理解了你的问题,有一个方向,并将对我的答案进行编辑
    • @sra 我已经编辑了我的答案,我希望这对你有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多