【问题标题】:Filling values in a column在列中填充值
【发布时间】:2020-05-22 16:51:18
【问题描述】:

如何在 pandas 中用逗号分隔的前一个值和下一个值填充 NA。

例如:

我有

 1
 2
 4
 6 
NA 
 8 
 9
 5

.

输出:

 1 
 2 
 4
 6
 6,8
 8
 9
 5.

这在 Pandas 中怎么可能?

【问题讨论】:

  • 提示:创建一个结合ffill和bfill的系列,然后将fillna您的原始系列与您创建的系列结合起来。
  • 是否可以一次性完成,还是我应该先填充,然后填充并合并它们??
  • 为什么要连续使用6,8,这会破坏列的dtype,最好将6和8放在不同的行中,并且列dtype为int
  • @Kenan 这是个好问题。但是,也许我们看到的数字只是 OPs mcve 的一部分,并且在它们的实际数据集中,它们有字符串。

标签: python pandas data-science data-analysis data-transform


【解决方案1】:

将Series.bfill 和Series.ffill 与Series.str.cat 一起使用,然后用Series.fillna 填充NaN 值:

s.fillna(s.ffill().astype(str).str.cat(s.bfill().astype(str),','))

0      1
1      2
2      4
3      6
4    6,8
5      8
6      9
7      5
Name: col, dtype: object

【讨论】:

  • 很好的答案 (-:
猜你喜欢
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2019-05-18
  • 2019-10-26
  • 2020-01-26
  • 1970-01-01
相关资源
最近更新 更多