代码之家  ›  专栏  ›  技术社区  ›  gorjan

合并pandas数据框中30天内发生的行

  •  0
  • gorjan  · 技术社区  · 6 年前

    我有以下熊猫数据框:

    df_raw = pd.DataFrame({"id": [1,1,1,2,2], "date": [pd.Timestamp(2002,1,1), pd.Timestamp(2002,1,28), pd.Timestamp(2002,2,1), pd.Timestamp(2003,5,5),pd.Timestamp(2003,5,28)],"value_1": [10,20,30,40,50], "value_2": [60,70,np.nan,np.nan,100]})
    

    1. 需要合并具有相同id且彼此之间的日期最长为30天的行。
    2. 合并将以这样的方式进行:从日期较近的行中获取的值将与日期一起被获取。
    3. 如果在最近的行中缺少值,则应从日期较短的行中获取值。
    4. 最多合并两行。如果合并了两行,请尝试将它们与下一行合并,即使该行也在30天的范围内。

    因此,得到的数据应该是:

    df_processed = pd.DataFrame({"id": [1,1,2], "date": [pd.Timestamp(2002,1,1), pd.Timestamp(2002,2,1), pd.Timestamp(2003,5,28)], "value_1": [10, 30,50], "value_2": [60, 70,100]})
    

    免责声明:这是我真正想要达到的目标的简化版本,所以我可能有一些后续问题。

    0 回复  |  直到 6 年前