【发布时间】:2017-08-13 09:04:38
【问题描述】:
如果我有来自 Excel 电子表格的数据 - 格式规定只有更改的行才会填写第一列(其他条目为空白)。然后假定该值在接下来的 N 行中持续存在,直到该值再次更改。
所以 Pandas 如下所示导入这个 - 这里没有惊喜:
动物
猫
钠
钠
钠
狗
钠
钠
牛
南无
我需要用最后一个有效值替换 NaN - 所以在上面的例子中:
动物
猫
猫
猫
猫
狗
狗
狗
牛
牛
我想出了以下假设列名 Animal:
df.Animal.where(~df.Animal.isnull(), df.Animal.shift())
如果 Pandas 按顺序运行,则应该始终填写前一个“动物” - 但是当我运行它时,我看到只有代表 Cat、Dog 和 Cow 的第一个 NaN 被更新,其他 NaN 仍然存在。
如果我将 shift() 替换为硬编码字符串,它可以工作,所以逻辑看起来不错。
我假设这意味着 Pandas 没有按严格的顺序运行,并且可能正在并行化 map 操作。
在这种情况下(或者如果我做错了什么) - 我该怎么做?
谢谢!
菲尔。
【问题讨论】: