熊猫创建缺失的行



我有一个df,它看起来像这样,包含第1、2和3周的数据:

Product   Week   
A         1      
A         3      
B         1   
B         2

我希望自动创建缺少的周行以获得以下输出:

Product   Week   
A         1 
A         2     
A         3      
B         1   
B         2
B         3

应该很直白,但不知何故我无法理解。非常感谢。

这里有一种方法:

df = df.groupby('Product').apply(lambda x: x.set_index('Week').reindex(df.Week.unique())).reset_index(0 ,drop =True).ffill()

如果您需要min/max:之间的所有值

import numpy as np
df = (
df.groupby('Product')
.apply(lambda x:
x.set_index('Week')
.reindex(np.arange(df.Week.min(), df.Week.max() + 1)))
.reset_index(0, drop=True)
.ffill()
).reset_index()

备选方案:

df = df.reset_index().pivot('Product','Week', 'index').stack(dropna=False).ffill().reset_index().drop(0, 1)

输出:

Week Product
0     1       A
1     2       A
2     3       A
3     1       B
4     2       B
5     3       B

最新更新