是否有根据上面一行中的日期估算 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
我有一个带有日期列的数据框,其中缺少一些日期。我想用上一行日期后的第二天填充这些。
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