是否有根据上面一行中的日期估算 pandas 中的日期的函数?

Is there a function to impute date in pandas based on date in row above?

我有一个带有日期列的数据框,其中缺少一些日期。我想用上一行日期后的第二天填充这些。

  date        
0 2015-01-31  
1 NaT        
2 2015-02-02  

因此,例如在上面的数据框中,第 1 行将归因于 2015-02-01。我想在不重新索引的情况下实现这一目标!

将全局变量与 apply 一起使用有助于解决您的问题:

import pandas as pd
import numpy as np
df = pd.DataFrame({"d":["2015-01-31", np.nan, "2015-02-02", np.nan, np.nan, "2015-02-02", np.nan]})

df["d"] = pd.to_datetime(df["d"])

print(df)

#df

           d
0 2015-01-31
1        NaT
2 2015-02-02
3        NaT
4        NaT
5 2015-02-02
6        NaT

value = np.nan
def impute_date_rowise(x):
    global value
    if pd.isnull(value):
        value = x
        return value
    elif not pd.isnull(x):
        value = x
        return x
    else:
        value = (value + pd.DateOffset(days=1)).date()
        return value

df["d"].apply(impute_date_rowise)

0   2015-01-31
1   2015-02-01
2   2015-02-02
3   2015-02-03
4   2015-02-04
5   2015-02-02
6   2015-02-03