带有递增值的 Pandas fillna

Posted

技术标签:

【中文标题】带有递增值的 Pandas fillna【英文标题】:Pandas fillna with an incremented value 【发布时间】:2019-02-24 06:15:35 【问题描述】:

我有一个数据框,其中有一列连续但不相邻的数字和缺失值。

我想使用fillna 函数用前一个非缺失行的增量值填充缺失值。

这是一个简化的表格:

index  my_counter
0      1
1      2
2      NaN
3      3
4      NaN
5      NaN
6      8

我想这样填写my_counter

index  my_counter
0      1
1      2
2      2.1
3      3
4      3.1
5      3.2
6      8

我怎样才能完成这项任务?

【问题讨论】:

嗨@EricM,你能也显示你的代码吗?到目前为止,您尝试过什么? 我的尝试(成功)涉及循环和比较,这不是我寻求的以熊猫为中心的解决方案。 Wen的以下解决方案效果很好。只需要补充一点,您需要将 my_column 设置为等于该代码行,因为其目的是用递增的值“替换”NaN。 【参考方案1】:

IIUC ffillgroupby cumcount

df.my_counter.ffill()+df.groupby(df.my_counter.notnull().cumsum()).cumcount()/10
Out[92]: 
0    1.0
1    2.0
2    2.1
3    3.0
4    3.1
5    3.2
6    8.0
dtype: float64

【讨论】:

有没有办法用一系列 UUID 填充 NAN? df=df.apply(lambda x: x.fillna(uuid.uuid4().hex))

以上是关于带有递增值的 Pandas fillna的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas 在巨大的 CSV 中解析带有嵌套值的 JSON 列

如何从包含一系列值的列创建新的递增值列?

如何编写基于 Auto 递增值的 Oracle 触发器?

Pandas 中具有 NaN 值的子集列

Python、Pandas 和 for 循环:根据与列表值的匹配填充数据框行

带有分隔符的 Pandas groupby 连接