填写 pandas 数据框中缺失的天数
fill missing days in pandas dataframe
给定数据框
df = pd.DataFrame(data=[[1,1,3],[1,2,6],[1,4,3],[2,2,6]],columns=['ID','Day','Value'])
df
Out[58]:
ID Day Value
0 1 1 3
1 1 2 6
2 1 4 3
3 2 2 6
如您所见,对于 ID = 1,与 Day3 相关的值缺失,对于 ID =2,与 Day1 相关的值缺失...我想通过添加 np.nan 和失踪的一天...
Out[59]:
ID Day Value
0 1 1 3.0
1 1 2 6.0
2 1 3 NaN
3 1 4 3.0
4 2 1 NaN
5 2 2 6.0
您需要定义一个执行某些重建索引逻辑的自定义函数:
def f(x):
return x.set_index('Day').reindex(
np.arange(1, x.Day.max() + 1)
).Value
现在,执行 groupby
+ apply
:
df.groupby('ID').apply(f).reset_index()
ID Day Value
0 1 1 3.0
1 1 2 6.0
2 1 3 NaN
3 1 4 3.0
4 2 1 NaN
5 2 2 6.0
给定数据框
df = pd.DataFrame(data=[[1,1,3],[1,2,6],[1,4,3],[2,2,6]],columns=['ID','Day','Value'])
df
Out[58]:
ID Day Value
0 1 1 3
1 1 2 6
2 1 4 3
3 2 2 6
如您所见,对于 ID = 1,与 Day3 相关的值缺失,对于 ID =2,与 Day1 相关的值缺失...我想通过添加 np.nan 和失踪的一天...
Out[59]:
ID Day Value
0 1 1 3.0
1 1 2 6.0
2 1 3 NaN
3 1 4 3.0
4 2 1 NaN
5 2 2 6.0
您需要定义一个执行某些重建索引逻辑的自定义函数:
def f(x):
return x.set_index('Day').reindex(
np.arange(1, x.Day.max() + 1)
).Value
现在,执行 groupby
+ apply
:
df.groupby('ID').apply(f).reset_index()
ID Day Value
0 1 1 3.0
1 1 2 6.0
2 1 3 NaN
3 1 4 3.0
4 2 1 NaN
5 2 2 6.0