python - 在数据框的每一列上使用具有不同功能的不同列上的 apply()
问题描述
我有一个DataFrame
列 name age,salary
。也有一些NaN
价值观。我想使用Mean
and填充这些值Median
。
原始数据框
age salary
0 20.0 NaN
1 45.0 22323.0
2 NaN 598454.0
3 32.0 NaN
4 NaN 48454.0
使用 apply()用它们各自列age
的mean()
和填充缺失。salary
median()
我用了
df['age','salary'].apply({'age':lambda row:row.fillna(row.mean()), 'salary':lambda row:row.fillna(row.median()) })
Key error 'age','salary'
即使在我使用后它也会显示axis=1
预期输出
age salary
0 20.000000 48454.0
1 45.000000 22323.0
2 32.333333 598454.0
3 32.000000 48454.0
4 32.333333 48454.0
有人可以告诉我如何正确地做到这一点以及后台发生了什么吗?
请告诉是否还有其他方法。我正在从头开始学习 Pandas
解决方案
根据文档,您要求的最简单方法是将字典作为value
参数传递:
值:标量、字典、系列或数据帧
用于填充孔的值(例如 0),或者是值的 dict/Series/DataFrame,指定用于每个索引(对于 Series)或列(对于 DataFrame)的值。不在 dict/Series/DataFrame 中的值将不会被填充。此值不能是列表。
在您的情况下,代码将是下一个:
df.fillna(value={'age': df.age.mean(), 'salary': df.salary.median()}, inplace=True)
并给出:
age salary
0 20.000000 48454.0
1 32.333333 22323.0
2 45.000000 598454.0
3 32.333333 48454.0
4 32.000000 48454.0
5 32.333333 48454.0
推荐阅读
- java - 位置管理器不删除位置更新
- javascript - 仅返回从 fancytree 过滤的树
- python - 如何使用 plotly 在单个图中创建两个表?
- spring-integration - 手动注册spring集成流和多个子流
- python - 如何迭代到熊猫数据框列并删除特定行?
- matlab - 我可以删除占位符变量以在 Matlab 中节省内存吗?
- jquery - 单击按钮后重新关注输入
- mysql - 使用 REGEXP 在 MySQL 5 中返回特定的捕获组/子字符串
- ruby-on-rails - 具有多个不同ID的表单,如何保存
- excel - 制作列表重置子例程不删除总计行或其包含的公式