【发布时间】:2017-09-01 08:41:56
【问题描述】:
我有一个稀疏的数据框,包括购买或出售库存的日期,如下所示:
Date Inventory
2017-01-01 10
2017-01-05 -5
2017-01-07 15
2017-01-09 -20
我想解决的第一步是添加其他日期。我知道你可以使用 resample 但只是突出显示这部分以防它对下一个更困难的部分产生影响。如下:
Date Inventory
2017-01-01 10
2017-01-02 NaN
2017-01-03 NaN
2017-01-04 NaN
2017-01-05 -5
2017-01-06 NaN
2017-01-07 15
2017-01-08 NaN
2017-01-09 -20
最后一步是让它在 NaN 上向前填充,除非它遇到一个新值,该值被添加到上面行的当前值中,因此最终数据帧如下所示:
Date Inventory
2017-01-01 10
2017-01-02 10
2017-01-03 10
2017-01-04 10
2017-01-05 5
2017-01-06 5
2017-01-07 20
2017-01-08 20
2017-01-09 0
2017-01-10 0
我正在尝试使用 Python 的方法来解决这个问题,而不是基于循环的方法,因为那样会很慢。
该示例也应该适用于具有多个列的表,例如:
Date InventoryA InventoryB
2017-01-01 10 NaN
2017-01-02 NaN NaN
2017-01-03 NaN 5
2017-01-04 NaN 5
2017-01-05 -5 NaN
2017-01-06 NaN -10
2017-01-07 15 NaN
2017-01-08 NaN NaN
2017-01-09 -20 NaN
会变成:
Date InventoryA InventoryB
2017-01-01 10 0
2017-01-02 10 0
2017-01-03 10 5
2017-01-04 10 10
2017-01-05 5 10
2017-01-06 5 0
2017-01-07 20 0
2017-01-08 20 0
2017-01-09 0 0
2017-01-10 0 0
希望这也有帮助。我认为当前的解决方案将与 nans 本身存在问题。
谢谢
【问题讨论】:
-
我的解决方案有效吗?
-
在该示例中是的,但如果有多个列具有不同的日期和不同的空白,则不是这样。
-
嗯不是真的 :) 我需要另一个例子。