用列名填充数据框中的空值

时间:2019-06-17 08:08:11

标签: python-3.x pandas

我有一个包含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')

还有其他方法吗?

Python:3.6.5

1 个答案:

答案 0 :(得分:2)

DataFrame.fillna与由Index.to_series转换为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())