首页 > 解决方案 > 用列名填充 Data-Frame 中的 Null 值

问题描述

我有一个包含 55 列和 200 万行的数据框,其中混合了分类和数字字段。数据集中有 null/na 值。我想用列名填充 Null 值。

我拥有的数据集是:

  A     B    C   D  .....
  1     na   na  3  .....
  na    3    4   na .....
  ........................

我试图得到的输出是:

  A     B    C   D  .....

  1     B    C   3  .....
  A    3    4    D .....
  ........................

我正在尝试使用:

df.fillna(method='ffill')

还有其他方法吗?

蟒蛇:3.6.5

标签: python-3.xpandas

解决方案


DataFrame.fillna与转换为Seriesby的列一起使用Index.to_series

df = df.fillna(df.columns.to_series())
print (df)
   A  B  C  D
0  1  B  C  3
1  A  3  4  D

编辑:如果 DataFrame 中的分类列选择这些列并附加不存在的值cat.add_categories

for c in df.select_dtypes('category'):
    df[c] = df[c].cat.add_categories(c)
df = df.fillna(df.columns.to_series())

推荐阅读