看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
本需求为在一个数据集中,指定一个列,将这个列的缺失值所在的行中所有的数字,替换成其在本列的平均数据。
import pandas as pd
import numpy as np
# 构造数据
np.random.seed(999)
arr = np.random.randint(20, size=(5, 4))
df = pd.DataFrame(arr, columns=list('abcd'))
df.loc[(1,3),:'a'] = np.nan
'''
a b c d
0 0.0 5 1 8
1 NaN 19 16 13
2 8.0 8 16 5
3 NaN 11 11 4
4 6.0 18 7 6
'''
分析需求,a 列有缺失值的为行 1 和 3 ,需要将两行后边所有数据替换成它个在 b、c、d 列的平均数据,如行 1,将 19 换成它在 b 列的平均数据, 16 换成 c 列的平均数。
# 选择出 a 列为空的值,再让它所有的列为当列平均值
df[df.a.isna()] = df.mean()
'''
a b c d
0 0.000000 5.0 1.0 8.0
1 4.666667 12.2 10.2 7.2
2 8.000000 8.0 16.0 5.0
3 4.666667 12.2 10.2 7.2
4 6.000000 18.0 7.0 6.0
'''
用 df[df.a.isna()]
选择出所有 a 列为空的行,然后将各列的平均数据 df.mean()
赋值(修改)到此范围数据,最终就完成了修改。
更新时间:2024-08-18 15:40:24 标签:pandas python 空值 平均值