我有一个包含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
答案 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())