python-3.x - 用列名填充 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
解决方案
DataFrame.fillna
与转换为Series
by的列一起使用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())
推荐阅读
- javascript - 试图从 mysql 数据库传递信息以做出本机反应
- angular - 如何在 Angular 中的表单上使用 TypeScript Map 对象
- python - 将 SQLAlchemy 从 0.9.7 升级到 1.3.11,结果 obj 是不可变的
- github - 当在 github 页面上部署时,Git 会一起被绞死几个小时
- javascript - 将jQuery动画高度调用为100%后,在div中滚动停止工作?
- reactjs - 函数的输入来自哪里
- c++ - 如何等待此线程池中的所有任务完成?
- java - 字符引用“”是无效的 XML 字符
- machine-learning - 如何修改标准多层网络的反向传播,包括每层的标量增益?
- c - 从文件中读取行,仅打印与用户选择的字母数量相同的行