Python 用每个变量的平均值替换缺少的值
我想:用我尝试过的方法替换缺少的值:Python 用每个变量的平均值替换缺少的值,python,dataframe,Python,Dataframe,我想:用我尝试过的方法替换缺少的值: num_df.fillna(num_df.mean()) 但我仍然缺少价值观 {'id': {0: 0, 1: 1, 2: 2, 3: 3}, 'age': {0: 48.0, 1: 7.0, 2: 62.0, 3: 48.0}, 'bp': {0: 80.0, 1: 50.0, 2: 80.0, 3: 70.0}, 'al': {0: 1.0, 1: 4.0, 2: 2.0, 3: 4.0}, 'su': {0: 0.0, 1: 0.0, 2: 3.0,
num_df.fillna(num_df.mean())
但我仍然缺少价值观
{'id': {0: 0, 1: 1, 2: 2, 3: 3}, 'age': {0: 48.0, 1: 7.0, 2: 62.0, 3: 48.0}, 'bp': {0: 80.0, 1: 50.0, 2: 80.0, 3: 70.0}, 'al': {0: 1.0, 1: 4.0, 2: 2.0, 3: 4.0}, 'su': {0: 0.0, 1: 0.0, 2: 3.0, 3: 0.0}, 'bgr': {0: 121.0, 1: nan, 2: 423.0, 3: 117.0}, 'bu': {0: 36.0, 1: 18.0, 2: 53.0, 3: 56.0}, 'sc': {0: 1.2, 1: 0.8, 2: 1.8, 3: 3.8}, 'sod': {0: nan, 1: nan, 2: nan, 3: 111.0}, 'pot': {0: nan, 1: nan, 2: nan, 3: 2.5}, 'hemo': {0: 15.4, 1: 11.3, 2: 9.6, 3: 11.2}, 'pcv': {0: '44', 1: '38', 2: '31', 3: '32'}, 'wc': {0: '7800', 1: '6000', 2: '7500', 3: '6700'}, 'rc': {0: '5.2', 1: nan, 2: nan, 3: '3.9'}} ```
num_df.fillna(num_df.mean())
[编辑]
我理解实际问题,fillna(df.mean())用列的平均值填充nan值。有包含所有nan值的列。因此,在fillna(df.mean())方法之后得到nan值
我用下面所示的随机示例尝试了您的方法
import numpy as np
import pandas as pd
data = [[np.nan, np.nan, 15, 4], [1,2,3,4], [10,20,np.nan,30]]
df = pd.DataFrame(data)
df = df.fillna(df.mean())
它之所以有效,是因为我没有完整的nan列。最后几列是字符串,而不是浮点数 在取
平均值之前,尝试转换为float:
#确保所有内容都是数字
num_df=num_df.apply(pd.to_numeric,errors='concurve')
#小气
num_df=num_df.fillna(num_df.mean())
打印(数字/单位)
请将您的问题作为文本包含在数据框中,以便人们可以将其复制到他们的环境中,并在您的数据框上测试他们的解决方案。你的数据框不能从文本的屏幕截图中重新创建。你对所有NaN的列的平均值有何期望?我想用每列的平均值替换NaN。我的数据框比我制作的屏幕截图大,它不仅有NaN,但是我的技术没有替换我rc列中的NaN。你能打印吗(头数(4.to dict())
(尝试填充前)并将问题中的输出粘贴为dataframe builder?不幸的是,此方法无法替换所有缺少的值…某些列保留Nan@kevincaro我理解了这个问题,并更新了我的答案。这不是因为这个,因为我的rc列仍然有这些NanI。我有一条错误消息:TypeError:float()参数必须是字符串或数字,而不是此行中的“NAType”
num\u df=num\u df.astype(float)
请立即尝试使用to\u numeric
import numpy as np
import pandas as pd
data = [[np.nan, np.nan, 15, 4], [1,2,3,4], [10,20,np.nan,30]]
df = pd.DataFrame(data)
df = df.fillna(df.mean())
id sod pot hemo pcv wc rc
0 0 111.0 2.5 15.4 44 7800 5.20
1 1 111.0 2.5 11.3 38 6000 4.55
2 2 111.0 2.5 9.6 31 7500 4.55
3 3 111.0 2.5 11.2 32 6700 3.90