我正在尝试更正没有日期的每一行。然后的想法仅仅是填补缺失日期之间的空白,并使用先前的值填写其他列。
ds SKU Estoque leadtime
0 2018-01-02 504777 45 11
1 2018-01-04 504777 42 11
2 2018-01-05 504777 41 11
3 2018-01-09 504777 40 11
4 2018-01-12 504777 37 11
5 2018-01-13 504777 36 11
6 2018-01-15 504777 35 11
... ... ... ... ...
6629 2018-08-14 857122 11 10
6630 2018-08-15 857122 10 10
6631 2018-08-16 857122 9 10
6632 2018-08-17 857122 7 10
6633 2018-08-23 857122 14 10
6634 2018-08-24 857122 13 10
我已经尝试过:
df.set_index('ds', inplace=True)
df = df.resample("D")
或
df.resample("D", how='first', fill_method='ffill')
但是我刚得到这个:
DatetimeIndexResampler [freq=<Day>, axis=0, closed=left, label=left, convention=start, base=0]
当我尝试时:
(df.groupby('SKU')
.resample('D')
.last()
.reset_index()
.set_index('ds'))
我收到此错误:
ValueError: cannot insert SKU, already exists
我正在尝试获得以下结果:
ds SKU Estoque leadtime
0 2018-01-02 504777 45 11
1 2018-01-03 504777 45 11
2 2018-01-04 504777 42 11
3 2018-01-05 504777 41 11
4 2018-01-06 504777 41 11
5 2018-01-07 504777 41 11
6 2018-01-08 504777 41 11
7 2018-01-09 504777 40 11
... ... ... ... ...
PS:如果将日期设置为索引,则索引重复。我需要先隔离每个产品(分组)。
答案 0 :(得分:1)
根据您的情况,您可能需要与apply
链接
#df.set_index('ds', inplace=True)
df.groupby('SKU').apply(lambda x : x.resample('D').ffill()).reset_index(level=0,drop=True)