我有一个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